Az SQL-tranzakció egy vagy több SQL-művelet sorozata (pl.INSERT UPDATE DELETE) egyetlen munkaegységként végrehajtva. A tranzakciók biztosítják, hogy vagy minden művelet sikeres legyen, vagy egyiket se alkalmazza az adatok integritásának megőrzése mellett.
részleges származék latex
Az SQL-tranzakciók legfontosabb tulajdonságai: ACID
Az SQL-tranzakciók integritását az ACID tulajdonságok szabályozzák, amelyek garantálják a megbízható adatbázis-tranzakciókat. Ez a négy tulajdonság együttesen garantálja, hogy az adatbázis konzisztens és megbízható maradjon.
- Atomos állapot: Egy tranzakció eredménye lehet teljesen sikeres vagy teljesen sikertelen. Az egész tranzakciót vissza kell vonni, ha annak egy része meghiúsul.
- Következetesség: A tranzakciók integritási korlátozásokat tartanak fenn azáltal, hogy az adatbázist egyik érvényes állapotból a másikba helyezik át.
- Elkülönítés: Az egyidejű tranzakciókat egymástól elkülönítve biztosítják az adatok pontossága.
- Tartósság: A tranzakció végrehajtása után a módosítások a rendszer meghibásodása esetén is érvényben maradnak.
SQL tranzakcióvezérlő parancsok
SQL-ben a tranzakcióvezérlő parancsok kezelik a az adatbázis-tranzakciók integritását és megbízhatóságát biztosító SQL műveletek végrehajtása. Ezek a parancsok segítenek kezelni az adatbázisban végrehajtott módosítások kezdeti véglegesítését és visszaállítását. Az alábbiakban az SQL-ben található kulcsfontosságú tranzakcióvezérlő parancsok találhatók, mindegyikre szintaxissal és példákkal.
1. TRANZAKCIÓ KEZDÉSE Parancs
ABEGIN TRANSACTIONparancs egy új tranzakció kezdetét jelzi. Minden SQL utasítás, amely ezt a parancsot követi, ugyanannak a tranzakciónak a része lesz, amíg aCOMMIT vagy ROLLBACK találkozik. Ez a parancs nem módosít az adatbázisban, csak elindítja a tranzakciót.
Szintaxis:
BEGIN TRANSACTION transaction_name ;Példa SQL-tranzakcióra banki átutalási forgatókönyvvel
Nézzünk egy példát két számla közötti banki átutalásra. Ez a példa több lekérdezés használatát mutatja be egyetlen tranzakcióban.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;
Ha bármilyen hiba történik, például probléma aUPDATEhasználható lekérdezésROLLBACKa tranzakció során végrehajtott összes módosítás visszavonásához:
ROLLBACK;Ez biztosítja, hogy a rendszer ne kerüljön olyan inkonzisztens állapotba, mint például a pénz levonása az egyik számláról anélkül, hogy hozzáadná a másikhoz.
BEGIN TRANSACTION TransferFunds;2. COMMIT parancs
ACOMMITA paranccsal az aktuális tranzakció során végrehajtott összes változtatást elmentheti az adatbázisba. A tranzakció véglegesítése után a változások véglegesek.
Szintaxis:
COMMIT;Példa
Itt a mintaStudenttáblázat, amelyet a példában szereplő műveletek végrehajtására használunk. Ez a táblázat olyan alapvető tanulói adatokat tartalmaz, mint például az azonosító név életkora és egyéb releváns információk, amelyeket különféle eszközökkel lehet manipulálni tranzakcióvezérlő parancsok.
DiákasztalAz alábbiakban egy példa látható, amely törli azokat a rekordokat a táblából, amelyek életkora = 20, majd COMMIT a változtatásokat az adatbázisban.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Kimenet
kimenet3. ROLLBACK parancs
AROLLBACKA parancs az aktuális tranzakcióban végrehajtott összes módosítás visszavonására szolgál. Akkor használatos, ha hiba történik, vagy ha a kívánt változtatások nem hajthatók végre. Az adatbázis visszaáll az előtti állapotba BEGIN TRANSACTION kivégezték.
Szintaxis:
ROLLBACK;Példa
Törölje ki a táblából azokat a rekordokat, amelyek életkora = 20, majd VISSZA VISSZA a változtatásokat az adatbázisban. Ebben az esetben a DELETE művelet visszavonásra kerül, és az adatbázis módosításai nem kerülnek mentésre.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Kimenet:
kimenet4. SAVEPOINT parancs
ASAVEPOINTlétrehozására szolgál a ellenőrző pont tranzakción belül. Visszatérhetünk egy konkréthozSAVEPOINTahelyett, hogy a teljes tranzakciót visszavonná. Ez lehetővé teszi számunkra, hogy a tranzakció egy részét visszavonjuk a teljes tranzakciót.
Szintaxis:
SAVEPOINT SAVEPOINT_NAME;Példa
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Kimenet:
kimenetMagyarázat:
From the above example Sample table1 Delete those records from the table which have age = 20 and then ROLLBACK the changes in the database by keeping Savepoints. Itt az SP1 az első SAVEPOINT létrehozása a törlés előtt. Ebben a példában egy törlés történt. A törlés után újra létrejön a SAVEPOINT SP2.
5. VISSZA A SAVEPOINTBA
AROLLBACK TO SAVEPOINTA parancs lehetővé teszi, hogy visszaállítsuk a tranzakciót egy adott mentési pontra, hatékonyan visszavonva az ezt követően végrehajtott változtatásokat.
Szintaxis:
karakterlánc átalakítása egész számmá java-ban
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Példa
A törlés megtörtént, tegyük fel, hogy meggondoltuk magunkat, és úgy döntöttünk, hogy VISSZATÉRÜNK a SAVEPOINT-hoz, amelyet SP1-ként azonosítottunk, és amely a törlés előtt van. Tehát ebben az esetben aDELETEA művelet visszavonásra kerül, és a tranzakció visszakerül abba az állapotba, amelyben voltSP1mentési pont.
ROLLBACK TO SP1;
//Rollback completed
Kimenet:
kimenet6. A SAVEPOINT Parancs felengedése
Ez a parancs az általunk létrehozott SAVEPOINT eltávolítására szolgál. A SAVEPOINT felszabadítása után már nem használhatjuk a ROLLBACK funkciót parancs az utolsó SAVEPOINT óta végrehajtott tranzakciók visszavonásához. Adatbázis-tranzakció kezdeményezésére és az ezt követő tranzakció jellemzőinek meghatározására szolgál.
Szintaxis:
könyvtár átnevezése
RELEASE SAVEPOINT SAVEPOINT_NAME;Példa
Egyszer a mentési pontSP2kiszabadul, már nem tekerhetünk vissza hozzá.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Miért érdemes tranzakciókat használni a banki szolgáltatásokban?
Ebben az esetben tranzakció nélkül fennáll annak a veszélye, hogy a pénzt levonják az egyik számláról, de nem adják hozzá a másikhoz, így a rendszer inkonzisztens állapotban van. A tranzakciók biztosítják az ilyen problémák elkerülését azáltal, hogy garantálják a két művelet együttes sikerét vagy sikertelenségét.
Az SQL-tranzakciók típusai
A tranzakciók természetüktől és az általuk végzett konkrét műveletektől függően különböző típusúak:
- Olvassa el a Tranzakciókat : Csak az adatok olvasására használják, általában a
SELECTlekérdezések. - Tranzakciók írása : Ezek az adatbázisban lévő adatok módosítását jelentik
INSERTUPDATEvagyDELETEműveleteket. - Elosztott tranzakciók : Ezek a tranzakciók több adatbázist ölelnek fel, és biztosítják ezek közötti konzisztenciát.
- Implicit tranzakciók : Automatikusan elindítja az SQL Server bizonyos műveletekhez.
- Explicit tranzakciók : Manuálisan vezérelt tranzakciók, ahol a felhasználó a tranzakciót ezzel kezdi és fejezi be
BEGIN TRANSACTIONCOMMITésROLLBACK.
SQL-tranzakciók figyelése és optimalizálása
A teljesítmény fenntartásához és a problémák megelőzéséhez vegye figyelembe a következő technikákat:
1. Monitorzárak : Kövesse nyomon a zárolási viselkedést, és állítsa be a lekérdezéseket a zárolási ütközések minimalizálása érdekében.
2. Limit Tranzakciós hatókör : Korlátozza a tranzakció által érintett sorok vagy rekordok számát a feldolgozás felgyorsítása érdekében.
3. Használja a kötegelt feldolgozást : Ha nagy mennyiségű adatot kezel, bontsa fel a műveleteket kisebb tranzakciókra vagy kötegekre, hogy elkerülje a rendszer túlterhelését.
Javasolt kvíz Kvíz szerkesztése 5 kérdésAz alábbi forgatókönyvek közül melyik írja le legjobban az ACID „Isolation” tulajdonságának megsértését?
- A
A tranzakció olyan állapotban hagyja el az adatbázist, amely sérti az elsődleges kulcsra vonatkozó megkötést.
- B
Két párhuzamosan futó tranzakció ugyanazt az adatot olvassa és írja, ami következetlen eredményekhez vezet.
- C
A felhasználó sikeresen frissít egy rekordot, de a rendszer összeomlása törli a változást.
- D
A tranzakció félúton meghiúsul, és minden módosítása visszavonásra kerül.
Ez egy klasszikus példa az elszigetelés megsértésére, amikor az egyik tranzakció köztes állapota látható a másik számára.
típusú java változókat
Egy banki alkalmazásban az átutalás egy számla megterhelését és egy másik jóváírását foglalja magában. Melyik ACID tulajdonság biztosítja, hogy mindkét művelet befejeződik, vagy egyik sem?
- A
Elkülönítés
- B
Atomos állapot
- C
Tartósság
- D
Következetesség
Az atomicitás biztosítja, hogy a tranzakción belül minden művelet sikeresen befejeződjön; ellenkező esetben a teljes tranzakció visszakerül.
Egy tranzakció végrehajtásra kerül, és egy „COMMIT” kerül kiadásra. Közvetlenül áramkimaradás után. Melyik ACID tulajdonság garantálja, hogy a tranzakció által végrehajtott változtatások a rendszer újraindítása után is jelen vannak?
- A
Következetesség
- B
Atomos állapot
- C
Tartósság
- D
Elkülönítés
java a huroktípusokhoz
A tartósság az a tulajdonság, amely biztosítja, hogy a tranzakció végrehajtása után az áramkimaradás vagy rendszerösszeomlás esetén is az maradjon.
Mi a 'SAVEPOINT' parancs elsődleges célja egy tranzakcióban?
- A
A tranzakció egy részének lekötésére.
- B
Egy olyan pont megjelölése a tranzakcióban, amelyre később visszaléphet.
- C
A tranzakció állapotának végleges mentéséhez.
- D
A tranzakció befejezéséhez és az összes módosítás véglegessé tételéhez.
A „SAVEPOINT” lehetővé teszi a tranzakción belüli részleges visszaállításokat.
Fontolja meg a következő tranzakciót: „TRANZAKCIÓ INDÍTÁSA; BESZÁLLÍTÁS...; SAVEPOINT A; FRISSÍTÉS ...; SAVEPOINT B; TÖRLÉS ...; VISSZA A MENTÉSI PONTBA;' Mi a tranzakció állapota a 'ROLLBACK' parancs után?
- A
A teljes tranzakció visszaállításra kerül.
- B
Csak a „TÖRLÉS” van visszavonva.
- C
Hiba történik, mert nem tud visszalépni olyan mentési pontra, amely nem a legutóbbi.
- D
Az 'INSERT' mentésre kerül, de az 'UPDATE' és 'DELETE' visszavonásra kerül.
Az „A MENTÉSI PONT”-hoz való visszatérés visszavonja a mentési pont után végrehajtott összes módosítást, amelyek a „FRISSÍTÉS” és „TÖRLÉS”.
A kvíz sikeresen kitöltött pontszáma: 2/5Pontosság: 0%Jelentkezzen be a magyarázat megtekintéséhez 1/5 1/5 < Previous Következő >