logo

TRANSAKCIE SQL

Transakcia SQL je sekvencia jednej alebo viacerých operácií SQL (napr.INSERT UPDATE DELETE) vykonávané ako jedna jednotka práce. Transakcie zabezpečujú, že buď všetky operácie budú úspešné, alebo sa nepoužije žiadna, pričom sa zachováva integrita údajov.

Kľúčové vlastnosti SQL transakcií: ACID

Integrita SQL transakcií je riadená vlastnosťami ACID, ktoré zaručujú spoľahlivé databázové transakcie. Tieto štyri vlastnosti spolupracujú, aby zaručili, že databáza zostane konzistentná a spoľahlivá.

  • Atómovosť: Výsledok transakcie môže byť buď úplne úspešný, alebo úplne neúspešný. Celá transakcia sa musí vrátiť späť, ak jedna jej časť zlyhá.
  • konzistencia: Transakcie zachovávajú obmedzenia integrity presunom databázy z jedného platného stavu do druhého.
  • Izolácia: Súbežné transakcie sú od seba izolované, čím sa zabezpečuje presnosť údajov.
  • Trvanlivosť: Po potvrdení transakcie zostávajú jej zmeny v platnosti aj v prípade zlyhania systému.

SQL príkazy riadenia transakcií

V SQL príkazy riadenia transakcií spravujú vykonávanie SQL operácií zabezpečujúcich integritu a spoľahlivosť databázových transakcií. Tieto príkazy pomáhajú manažovať počiatočné odovzdanie a vrátenie zmien vykonaných v databáze. Nižšie sú uvedené kľúčové príkazy riadenia transakcií v SQL vysvetlené so syntaxou a príkladmi pre každý z nich.



1. Príkaz BEGIN TRANSACTION

TheBEGIN TRANSACTIONpríkaz označuje začiatok novej transakcie. Všetky príkazy SQL, ktoré nasledujú po tomto príkaze, budú súčasťou tej istej transakcie až do aCOMMIT alebo ROLLBACK sa stretáva. Tento príkaz nevykonáva žiadne zmeny v databáze, iba spustí transakciu.

Syntax:

BEGIN TRANSACTION transaction_name ;

Príklad SQL transakcie so scenárom bankového prevodu

Pozrime sa na príklad bankového prevodu medzi dvoma účtami. Tento príklad ukazuje použitie viacerých dopytov v jednej transakcii.

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;

Ak sa vyskytne nejaká chyba, napríklad problém sUPDATEdotaz, ktorý môžete použiťROLLBACKak chcete vrátiť späť všetky zmeny vykonané počas transakcie:

ROLLBACK;

To zaisťuje, že systém neskončí v nekonzistentnom stave, ako je napríklad odpočítanie peňazí z jedného účtu bez ich pridania na iný.

BEGIN TRANSACTION TransferFunds;

2. Príkaz COMMIT

TheCOMMITpríkaz sa používa na uloženie všetkých zmien vykonaných počas aktuálnej transakcie do databázy. Po potvrdení transakcie sú zmeny trvalé. 

Syntax:

COMMIT;

Príklad

Tu je ukážkaStudenttabuľky, ktorá sa použije na vykonávanie operácií v tomto príklade. Táto tabuľka obsahuje základné podrobnosti o študentovi, ako je vek ID mena a ďalšie relevantné informácie, s ktorými sa bude manipulovať rôznymi spôsobmi príkazy na kontrolu transakcií.

výstup' title=Študentský stôl

Nasleduje príklad, ktorý vymaže z tabuľky tie záznamy, ktoré majú vek = 20, a potom POTVRDÍ zmeny v databáze. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Výstup

výstup' loading='lazy' title=výstup

3. Príkaz ROLLBACK

TheROLLBACKpríkaz sa používa na vrátenie všetkých zmien vykonaných v aktuálnej transakcii. Používa sa, keď sa vyskytne chyba alebo keď nie je možné dokončiť požadované zmeny. Databáza sa vráti do stavu, v akom bola pred BEGIN TRANSACTION bol popravený.

Syntax:

ROLLBACK;

Príklad

Vymažte z tabuľky tie záznamy, ktoré majú vek = 20 a potom VRÁŤTE zmeny v databáze. V tomto prípade DELETE operácia sa vráti späť a zmeny v databáze sa neuložia.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

výstup:

výstup' loading='lazy' title=výstup

4. Príkaz SAVEPOINT

ASAVEPOINTsa používa na vytvorenie a kontrolný bod v rámci transakcie. Môžeme sa vrátiť ku konkrétnemuSAVEPOINTnamiesto vrátenia celej transakcie. To nám umožňuje vrátiť späť časť transakcie celú transakciu.

Syntax:

SAVEPOINT SAVEPOINT_NAME;

Príklad

SAVEPOINT SP1;  
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.

výstup:

rajesh khanna
výstup' loading='lazy' title=výstup

Vysvetlenie:

Z vyššie uvedeného príkladu Vzorová tabuľka1 Odstráňte z tabuľky tie záznamy, ktoré majú vek = 20, a potom VRÁŤTE zmeny v databáze ponechaním bodov uloženia. Tu je SP1 prvý SAVEPOINT vytvorený pred odstránením. V tomto príklade došlo k jednému vymazaniu. Po opätovnom vymazaní sa vytvorí SAVEPOINT SP2. 

5. NÁVRAT NA ULOŽENIE

TheROLLBACK TO SAVEPOINTpríkaz nám umožňuje vrátiť transakciu späť do konkrétneho bodu uloženia a efektívne vrátiť zmeny vykonané po tomto bode.

Syntax:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Príklad

Prebehlo vymazanie, predpokladajme, že sme zmenili názor a rozhodli sme sa VRÁTIŤ SA NA ULOŽENIE, ktoré sme identifikovali ako SP1, ktoré je pred vymazaním. Takže v tomto prípadeDELETEoperácia sa zruší a transakcia sa vráti do stavu, v akom bolaSP1savepoint.

pvr plná forma
ROLLBACK TO SP1;  
//Rollback completed

výstup:

výstup' loading='lazy' title=výstup

6. Príkaz RELEASE SAVEPOINT

Tento príkaz sa používa na odstránenie SAVEPOINT, ktorý sme vytvorili. Po uvoľnení SAVEPOINT už nemôžeme použiť ROLLBACK príkaz na zrušenie transakcií vykonaných od posledného SAVEPOINT. Používa sa na spustenie databázovej transakcie a používa sa na špecifikáciu charakteristík transakcie, ktorá nasleduje. 

Syntax:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Príklad

Akonáhle je záchranný bodSP2je prepustený, už sa k nemu nemôžeme vrátiť.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Prečo používať transakcie v bankovníctve?

V tomto prípade bez transakcie riskujete scenáre, keď sa peniaze odpočítajú z jedného účtu, ale nepridajú sa na druhý, pričom systém zostane v nekonzistentnom stave. Transakcie zaisťujú, že sa takýmto problémom predíde tým, že zaručia, že obe operácie budú úspešné alebo neúspešné.

Typy SQL transakcií

Existujú rôzne typy transakcií podľa ich povahy a konkrétnych operácií, ktoré vykonávajú:

  • Prečítajte si Transakcie : Používa sa iba na čítanie údajov zvyčajne pomocou SELECT otázky.
  • Napíšte transakcie : Ide o úpravu údajov v databáze pomocou INSERT UPDATEaleboDELETEoperácií.
  • Distribuované transakcie : Tieto transakcie zahŕňajú viacero databáz a zabezpečujú konzistentnosť medzi nimi.
  • Implicitné transakcie : Automaticky spúšťa SQL Server pre určité operácie.
  • Explicitné transakcie : Manuálne riadené transakcie, kde používateľ začína a končí transakciu pomocouBEGIN TRANSACTION COMMITaROLLBACK.

Monitorovanie a optimalizácia transakcií SQL

Na udržanie výkonu a predchádzanie problémom zvážte nasledujúce techniky:

1. Zámky monitora : Sledujte správanie uzamykania a upravujte dotazy tak, aby sa minimalizovali konflikty uzamykania.

2. Obmedzte rozsah transakcie : Obmedzte počet riadkov alebo záznamov ovplyvnených transakciou, aby ste urýchlili spracovanie.

3. Použite dávkové spracovanie : Ak spracovávate veľké množstvo údajov, rozdeľte operácie na menšie transakcie alebo dávky, aby ste predišli preťaženiu systému.

Navrhovaný kvíz Upraviť kvíz 5 otázok

Ktorý z nasledujúcich scenárov najlepšie popisuje porušenie vlastnosti 'Izolácia' v ACID?

  • A

    Transakcia opustí databázu v stave, ktorý porušuje obmedzenie primárneho kľúča.

  • B

    Dve transakcie prebiehajúce súčasne čítajú a zapisujú do rovnakých údajov, čo vedie k nekonzistentným výsledkom.

  • C

    Používateľ úspešne aktualizuje záznam, ale zlyhanie systému túto zmenu vymaže.

  • D

    Transakcia zlyhá uprostred a všetky jej zmeny sa vrátia späť.

Vysvetlenie:

Toto je klasický príklad narušenia izolácie, keď je prechodný stav jednej transakcie viditeľný pre druhú.

V bankovej aplikácii prevod prostriedkov zahŕňa odpísanie prostriedkov z jedného účtu a pripísanie prostriedkov na iný účet. Ktorá vlastnosť ACID zaisťuje, že buď obe operácie budú dokončené, alebo žiadna?

  • A

    Izolácia

  • B

    Atomicita

  • C

    Trvanlivosť

  • D

    Dôslednosť

Vysvetlenie:

Atomicita zaisťuje, že všetky operácie v rámci transakcie sú úspešne dokončené; inak sa celá transakcia vráti späť.

Transakcia sa vykoná a vydá sa „COMMIT“. Ihneď po výpadku prúdu. Ktorá vlastnosť ACID zaručuje, že zmeny vykonané transakciou sú stále prítomné aj po reštarte systému?

  • A

    Dôslednosť

  • B

    Atomicita

  • C

    Trvanlivosť

  • D

    Izolácia

Vysvetlenie:

Trvanlivosť je vlastnosť, ktorá zaisťuje, že po vykonaní transakcie zostane taká aj v prípade výpadku napájania alebo zlyhania systému.

Aký je primárny účel príkazu 'SAVEPOINT' v transakcii?

  • A

    Na vykonanie časti transakcie.

  • B

    Označenie bodu v transakcii, ku ktorému sa môžete neskôr vrátiť.

  • C

    Trvalé uloženie stavu transakcie.

  • D

    Na ukončenie transakcie a vykonanie všetkých zmien natrvalo.

    hashmap
Vysvetlenie:

'SAVEPOINT' umožňuje čiastočné vrátenie späť v rámci transakcie.

Zvážte nasledujúcu transakciu: 'START TRANSACTION; VLOŽIŤ ...; SAVEPOINT A; AKTUALIZÁCIA ...; ULOŽENIE BOD B; VYMAZAŤ...; NÁVRAT DO ÚLOŽNÉHO BODU A;' Aký je stav transakcie po príkaze 'ROLLBACK'?

  • A

    Celá transakcia je vrátená späť.

  • B

    Zruší sa iba príkaz „DELETE“.

  • C

    Vyskytne sa chyba, pretože sa nemôžete vrátiť späť k bodu uloženia, ktorý nie je najnovší.

  • D

    'INSERT' sa uloží, ale 'UPDATE' a 'DELETE' sa vrátia späť.

Vysvetlenie:

Návrat späť na 'SAVEPOINT A' zruší všetky zmeny vykonané po tomto bode uloženia, ktorými sú 'UPDATE' a 'DELETE'.

TRANSAKCIE SQLKvíz úspešne dokončený Vaše skóre:  2/5Presnosť: 0%Prihláste sa na zobrazenie vysvetlenia 1/5 1/5 < Previous Ďalej >