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í.
Študentský stôlNasleduje 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ýstup3. 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ýstup4. 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ýstupVysvetlenie:
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ýstup6. 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
SELECTotázky. - Napíšte transakcie : Ide o úpravu údajov v databáze pomocou
INSERTUPDATEaleboDELETEoperá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 pomocou
BEGIN TRANSACTIONCOMMITaROLLBACK.
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ázokKtorý 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äť.
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ť
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
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
'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äť.
Návrat späť na 'SAVEPOINT A' zruší všetky zmeny vykonané po tomto bode uloženia, ktorými sú 'UPDATE' a 'DELETE'.
Kvíz úspešne dokončený Vaše skóre: 2/5Presnosť: 0%Prihláste sa na zobrazenie vysvetlenia 1/5 1/5 < Previous Ďalej >