logo

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.

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.

kimenet' title=Diá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

kimenet' loading='lazy' title=kimenet

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

kimenet' loading='lazy' title=kimenet

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

kimenet' loading='lazy' title=kimenet

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

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:

kimenet' loading='lazy' title=kimenet

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:  

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 SELECT lekérdezések.
  • Tranzakciók írása : Ezek az adatbázisban lévő adatok módosítását jelentik INSERT UPDATEvagyDELETEmű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 beBEGIN TRANSACTION COMMITé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é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.

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

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?

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/5Pontosság: 0%Jelentkezzen be a magyarázat megtekintéséhez 1/5 1/5 < Previous Következő >