SQL TRANSZAKCIÓK

SQL TRANSZAKCIÓK

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.

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

A BEGIN TRANSACTION parancs 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 a COMMIT 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 a UPDATE használható lekérdezés ROLLBACK a 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

A COMMIT A 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 minta Student tá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.

kimenetDiákasztal

Az 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

kimenetkimenet

3. ROLLBACK parancs

A ROLLBACK A 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:

kimenetkimenet

4. SAVEPOINT parancs

A SAVEPOINT létrehozására szolgál a ellenőrző pont tranzakción belül. Visszatérhetünk egy konkréthoz SAVEPOINT ahelyett, 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:

kimenetkimenet

Magyará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

A ROLLBACK TO SAVEPOINT A 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:

 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 a DELETE A művelet visszavonásra kerül, és a tranzakció visszakerül abba az állapotba, amelyben volt SP1 mentési pont.

 ROLLBACK TO SP1;   
//Rollback completed

Kimenet:

kimenetkimenet

6. 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:  

 RELEASE SAVEPOINT SAVEPOINT_NAME;  

Példa

Egyszer a mentési pont SP2 kiszabadul, 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 SELECT lekérdezések.
  • Tranzakciók írása : Ezek az adatbázisban lévő adatok módosítását jelentik INSERT UPDATE vagy DELETE mű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 TRANSACTION COMMIT és ROLLBACK .

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és

Az 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.

Magyarázat:

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.

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

Magyarázat:

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

Magyarázat:

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.

Magyarázat:

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.

Magyarázat:

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”.

SQL TRANSZAKCIÓKA kvíz sikeresen kitöltött pontszáma:   2 /5 Pontosság:  0% Jelentkezzen be a magyarázat megtekintéséhez 1 /5 1 /5 < Previous Következő >