logo

SQL TRANSAKCIJE

Transakcija SQL je zaporedje ene ali več operacij SQL (npr.INSERT UPDATE DELETE) izvedeno kot ena enota dela. Transakcije zagotavljajo, da so vse operacije uspešne ali pa nobena ni uporabljena, pri čemer se ohranja celovitost podatkov.

Ključne lastnosti transakcij SQL: ACID

Celovitost transakcij SQL urejajo lastnosti ACID, ki zagotavljajo zanesljive transakcije baze podatkov. Te štiri lastnosti delujejo skupaj in zagotavljajo, da baza podatkov ostane dosledna in zanesljiva.

  • Atomičnost: Izid transakcije je lahko popolnoma uspešen ali popolnoma neuspešen. Celotno transakcijo je treba razveljaviti, če en del ne uspe.
  • Konsistentnost: Transakcije ohranjajo omejitve celovitosti s premikanjem baze podatkov iz enega veljavnega stanja v drugo.
  • Izolacija: Sočasne transakcije so ločene ena od druge, kar zagotavlja točnost podatkov.
  • Vzdržljivost: Ko je transakcija potrjena, njene spremembe ostanejo v veljavi tudi v primeru okvare sistema.

Ukazi za nadzor transakcij SQL

V SQL ukazi za nadzor transakcij upravljajo izvajanje operacij SQL, ki zagotavljajo celovitost in zanesljivost transakcij baze podatkov. Ti ukazi pomagajo upravljati začetno objavo in povrnitev sprememb, narejenih v bazi podatkov. Spodaj so ključni ukazi za nadzor transakcij v SQL, razloženi s sintakso in primeri za vsakega.



1. Ukaz ZAČNI TRANSAKCIJO

TheBEGIN TRANSACTIONukaz označuje začetek nove transakcije. Vsi stavki SQL, ki sledijo temu ukazu, bodo del iste transakcije, dokler aCOMMIT oz ROLLBACK se sreča. Ta ukaz ne naredi nobenih sprememb v zbirki podatkov, temveč samo začne transakcijo.

Sintaksa:

BEGIN TRANSACTION transaction_name ;

Primer transakcije SQL s scenarijem bančnega nakazila

Poglejmo primer bančnega nakazila med dvema računoma. Ta primer prikazuje uporabo več poizvedb v eni transakciji.

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;

Če pride do kakršne koli napake, kot je težava zUPDATEpoizvedbo, ki jo lahko uporabiteROLLBACKza razveljavitev vseh sprememb med transakcijo:

ROLLBACK;

To zagotavlja, da se sistem ne znajde v nedoslednem stanju, kot je odštevanje denarja z enega računa, ne da bi ga dodal drugemu.

BEGIN TRANSACTION TransferFunds;

2. Ukaz COMMIT

TheCOMMITukaz se uporablja za shranjevanje vseh sprememb, narejenih med trenutno transakcijo, v bazo podatkov. Ko je transakcija potrjena, so spremembe trajne. 

Sintaksa:

COMMIT;

Primer

Tukaj je vzorecStudenttabelo, ki bo uporabljena za izvajanje operacij v tem primeru. Ta tabela vsebuje osnovne podatke o študentu, kot je ID ime, starost in druge pomembne informacije, ki bodo obdelane z različnimi ukazi za nadzor transakcij.

izhod' title=Študentska miza

Sledi primer, ki bi izbrisal tiste zapise iz tabele, ki imajo starost = 20, in nato IZVELI spremembe v bazi podatkov. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Izhod

izhod' loading='lazy' title=izhod

3. Ukaz ROLLBACK

TheROLLBACKukaz se uporablja za razveljavitev vseh sprememb v trenutni transakciji. Uporablja se, ko pride do napake ali ko želenih sprememb ni mogoče dokončati. Baza podatkov se bo vrnila v stanje, v katerem je bila pred BEGIN TRANSACTION je bil izvršen.

Sintaksa:

ROLLBACK;

Primer

Izbrišite tiste zapise iz tabele, ki imajo starost = 20 in nato ROLLBACK spremembe v bazi podatkov. V tem primeru je DELETE operacija je razveljavljena in spremembe baze podatkov niso shranjene.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Izhod:

izhod' loading='lazy' title=izhod

4. Ukaz SAVEPOINT

ASAVEPOINTse uporablja za ustvarjanje a kontrolna točka znotraj transakcije. Lahko se vrnemo nazaj na določenoSAVEPOINTnamesto da bi povrnili celotno transakcijo. To nam omogoča, da razveljavimo del transakcije namesto celotno transakcijo.

Sintaksa:

SAVEPOINT SAVEPOINT_NAME;

Primer

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

Izhod:

izhod' loading='lazy' title=izhod

Pojasnilo:

Iz zgornjega primera Vzorčna tabela1 Izbrišite tiste zapise iz tabele, ki imajo starost = 20, in nato RALLBACK spremembe v zbirki podatkov tako, da ohranite točke shranjevanja. Tukaj je SP1 prva SAVEPOINT, ustvarjena pred izbrisom. V tem primeru je prišlo do enega izbrisa. Po izbrisu se znova ustvari SAVEPOINT SP2. 

5. POVRNITEV NA SHRANJEVALNO TOČKO

TheROLLBACK TO SAVEPOINTukaz nam omogoča, da transakcijo vrnemo na določeno točko shranjevanja in učinkovito razveljavimo spremembe, narejene po tej točki.

Sintaksa:

hashmap v Javi
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Primer

Do izbrisa je prišlo, predpostavimo, da smo si premislili in se odločili za POVRNITEV NA TOČKO SHRANJEVANJA, ki smo jo identificirali kot SP1, ki je pred izbrisom. Torej v tem primeruDELETEje operacija razveljavljena in transakcija je vrnjena v stanje, v katerem je bila obSP1točka shranjevanja.

ROLLBACK TO SP1;  
//Rollback completed

Izhod:

izhod' loading='lazy' title=izhod

6. Ukaz RELEASE SAVEPOINT

Ta ukaz se uporablja za odstranitev SAVEPOINT-a, ki smo ga ustvarili. Ko je SAVEPOINT sproščen, ne moremo več uporabljati ROLLBACK ukaz za razveljavitev transakcij, izvedenih od zadnje TOČKE SHRANJEVANJA. Uporablja se za začetek transakcije baze podatkov in za določanje značilnosti transakcije, ki sledi. 

Sintaksa:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Primer

Ko je točka shranjevanjaSP2je sproščen, nanj se ne moremo več vrniti.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Zakaj uporabljati transakcije v bančništvu?

V tem primeru brez transakcije tvegate scenarije, ko se denar odšteje z enega računa, ne pa doda drugemu, zaradi česar je sistem v nedoslednem stanju. Transakcije zagotavljajo, da se takšnim težavam izognemo, saj zagotavljajo, da obe operaciji skupaj uspeta ali ne uspeta.

Vrste transakcij SQL

Obstajajo različne vrste transakcij glede na njihovo naravo in posebne operacije, ki jih izvajajo:

  • Preberite Transakcije : Uporablja se samo za branje podatkov, ki jih običajno uporablja SELECT poizvedbe.
  • Pišite transakcije : Ti vključujejo spreminjanje podatkov v bazi podatkov z INSERT UPDATEozDELETEoperacije.
  • Porazdeljene transakcije : Te transakcije zajemajo več baz podatkov in zagotavljajo doslednost med njimi.
  • Implicitne transakcije : samodejno zažene SQL Server za določene operacije.
  • Eksplicitne transakcije : Ročno nadzorovane transakcije, pri katerih uporabnik začne in konča transakcijo z uporaboBEGIN TRANSACTION COMMITinROLLBACK.

Spremljanje in optimizacija transakcij SQL

Če želite ohraniti učinkovitost in preprečiti težave, upoštevajte naslednje tehnike:

1. Ključavnice monitorja : Sledite obnašanju zaklepanja in prilagodite poizvedbe, da zmanjšate konflikte pri zaklepanju.

2. Omejite obseg transakcije : Omejite število vrstic ali zapisov, na katere vpliva transakcija, da pospešite obdelavo.

3. Uporabite paketno obdelavo : Če obdelujete velike količine podatkov, razdelite operacije na manjše transakcije ali pakete, da preprečite preobremenitev sistema.

Predlagani kviz Uredi kviz 5 vprašanj

Kateri od naslednjih scenarijev najbolje opisuje kršitev lastnosti 'izolacija' v ACID?

  • A

    Transakcija pusti bazo podatkov v stanju, ki krši omejitev primarnega ključa.

  • B

    Dve transakciji, ki se izvajata hkrati, bereta in pišeta iste podatke, kar vodi do nedoslednih rezultatov.

  • C

    Uporabnik uspešno posodobi zapis, vendar zrušitev sistema izbriše spremembo.

  • D

    Transakcija na sredini ne uspe in vse njene spremembe so razveljavljene.

Pojasnilo:

To je klasičen primer kršitve izolacije, kjer je vmesno stanje ene transakcije vidno drugi.

V bančni aplikaciji prenos sredstev vključuje bremenitev enega računa in dobropis drugega. Katera lastnost ACID zagotavlja, da se obe operaciji zaključita ali pa nobena?

  • A

    Izolacija

  • B

    Atomičnost

  • C

    Vzdržljivost

  • D

    Doslednost

Pojasnilo:

Atomicity zagotavlja, da so vse operacije znotraj transakcije uspešno zaključene; sicer se celotna transakcija povrne nazaj.

Transakcija se izvede in izda se 'COMMIT'. Takoj po izpadu električne energije. Katera lastnost ACID zagotavlja, da so spremembe, narejene s transakcijo, še vedno prisotne po ponovnem zagonu sistema?

metoda tostring java
  • A

    Doslednost

  • B

    Atomičnost

  • C

    Vzdržljivost

  • D

    Izolacija

Pojasnilo:

Vzdržljivost je lastnost, ki zagotavlja, da bo transakcija, ko je bila izvršena, ostala taka tudi v primeru izgube napajanja ali zrušitve sistema.

Kaj je glavni namen ukaza 'SAVEPOINT' v transakciji?

  • A

    Zavezati del transakcije.

  • B

    Za označevanje točke v transakciji, na katero se lahko pozneje vrnete nazaj.

  • C

    Za trajno shranjevanje stanja transakcije.

  • D

    Če želite končati transakcijo in narediti vse spremembe trajne.

Pojasnilo:

'SAVEPOINT' omogoča delne povrnitve nazaj znotraj transakcije.

Razmislite o naslednji transakciji: 'ZAČNI TRANSAKCIJO; VSTAVITE ...; SHRANJEVALNA TOČKA A; POSODOBITEV ...; SHRANJEVALNA TOČKA B; IZBRIŠI ...; POVRNITEV NA SHRANJEVALNO TOČKO A;' Kakšno je stanje transakcije po ukazu 'ROLLBACK'?

  • A

    Celotna transakcija je povrnjena nazaj.

  • B

    Samo 'DELETE' je razveljavljen.

  • C

    Napaka se pojavi, ker se ne morete vrniti na točko shranjevanja, ki ni najnovejša.

  • D

    »INSERT« je shranjen, vendar sta »UPDATE« in »DELETE« razveljavljena.

Pojasnilo:

Vrnitev nazaj na 'TOČKO SHRANJEVANJA A' razveljavi vse spremembe, narejene po tej točki shranjevanja, ki sta 'POSODOBITEV' in 'BRISANJE'.

SQL TRANSAKCIJEKviz uspešno zaključen Vaš rezultat:  2/5Natančnost: 0 %Prijavite se za ogled razlage 1/5 1/5 < Previous Naprej >