logo

SQL-TRANSAKSJONER

En SQL-transaksjon er en sekvens av én eller flere SQL-operasjoner (f.INSERT UPDATE DELETE) utført som en enkelt arbeidsenhet. Transaksjoner sikrer at enten alle operasjoner lykkes, eller at ingen utføres og opprettholder dataintegriteten.

Nøkkelegenskaper for SQL-transaksjoner: ACID

Integriteten til SQL-transaksjoner styres av ACID-egenskapene som garanterer pålitelige databasetransaksjoner. Disse fire egenskapene fungerer sammen for å garantere at databasen forblir konsistent og pålitelig.

  • Atomitet: Utfallet av en transaksjon kan enten være helt vellykket eller helt mislykket. Hele transaksjonen må rulles tilbake hvis en del av den mislykkes.
  • Konsistens: Transaksjoner opprettholder integritetsbegrensninger ved å flytte databasen fra en gyldig tilstand til en annen.
  • Isolering: Samtidige transaksjoner er isolert fra hverandre for å sikre nøyaktigheten av dataene.
  • Varighet: Når en transaksjon er forpliktet, forblir endringene gjeldende selv i tilfelle systemfeil.

SQL-transaksjonskontrollkommandoer

I SQL-transaksjonskontrollkommandoer administrerer utførelse av SQL-operasjoner som sikrer integriteten og påliteligheten til databasetransaksjoner. Disse kommandoene hjelper til med å administrere start-commit og tilbakeføring av endringer som er gjort i databasen. Nedenfor er de viktigste transaksjonskontrollkommandoene i SQL forklart med syntaks og eksempler for hver.



1. BEGIN TRANSACTION Kommando

DeBEGIN TRANSACTIONkommandoen markerer begynnelsen på en ny transaksjon. Alle SQL-setninger som følger denne kommandoen vil være en del av den samme transaksjonen frem til aCOMMIT eller ROLLBACK er påtruffet. Denne kommandoen gjør ingen endringer i databasen, den starter bare transaksjonen.

Syntaks:

BEGIN TRANSACTION transaction_name ;

Eksempel på SQL-transaksjon med et bankoverføringsscenario

La oss se på et eksempel på en bankoverføring mellom to kontoer. Dette eksemplet viser bruken av flere søk i en enkelt transaksjon.

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;

Hvis det oppstår en feil, for eksempel et problem medUPDATEspørringen du kan brukeROLLBACKfor å angre alle endringer som er gjort under transaksjonen:

ROLLBACK;

Dette sikrer at systemet ikke ender opp i en inkonsekvent tilstand som å trekke penger fra en konto uten å legge dem til en annen.

innsettingssortering
BEGIN TRANSACTION TransferFunds;

2. COMMIT-kommando

DeCOMMITkommandoen brukes til å lagre alle endringer som er gjort under gjeldende transaksjon til databasen. Når en transaksjon er utført, er endringene permanente. 

Syntaks:

COMMIT;

Eksempel

Her er prøvenStudenttabell som vil bli brukt til å utføre operasjonene i dette eksemplet. Denne tabellen inneholder grunnleggende studentdetaljer som ID navn alder og annen relevant informasjon som vil bli manipulert ved hjelp av ulike transaksjonskontrollkommandoer.

produksjon' title=Studentbord

Følgende er et eksempel som ville slette de postene fra tabellen som har alder = 20 og deretter COMMIT endringene i databasen. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Produksjon

produksjon' loading='lazy' title=produksjon

3. ROLLBACK-kommando

DeROLLBACKkommandoen brukes til å angre alle endringer som er gjort i gjeldende transaksjon. Den brukes når det oppstår en feil eller når de ønskede endringene ikke kan fullføres. Databasen vil gå tilbake til tilstanden den var i før BEGIN TRANSACTION ble henrettet.

Syntaks:

ROLLBACK;

Eksempel

Slett de postene fra tabellen som har alder = 20, og RULL TILBAKE endringene i databasen. I dette tilfellet DELETE operasjonen angres og endringene i databasen lagres ikke.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Produksjon:

produksjon' loading='lazy' title=produksjon

4. SAVEPOINT-kommando

ENSAVEPOINTbrukes til å lage en kontrollpunkt innenfor en transaksjon. Vi kan rulle tilbake til en bestemtSAVEPOINTi stedet for å rulle tilbake hele transaksjonen. Dette lar oss angre en del av transaksjonen i stedet for hele transaksjonen.

Syntaks:

SAVEPOINT SAVEPOINT_NAME;

Eksempel

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

Produksjon:

produksjon' loading='lazy' title=produksjon

Forklaring:

k-nn algoritme

Fra eksempelet ovenfor Eksempeltabell1 Slett de postene fra tabellen som har alder = 20, og RULLER deretter endringene i databasen ved å beholde lagringspunkter. Her opprettes SP1 først SAVEPOINT før sletting. I dette eksemplet har én sletting funnet sted. Etter sletting opprettes SAVEPOINT SP2 igjen. 

5. RULL TILBAKE TIL SAVEPOINT

DeROLLBACK TO SAVEPOINTkommando lar oss rulle tilbake transaksjonen til et spesifikt lagringspunkt og effektivt angre endringer som er gjort etter det punktet.

Syntaks:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Eksempel

Sletting har funnet sted, la oss anta at vi har ombestemt oss og besluttet å RULLE TILBAKE til SAVEPOINT som vi identifiserte som SP1, som er før sletting. Så i dette tilfelletDELETEoperasjonen angres og transaksjonen returneres til tilstanden den var i vedSP1lagringspunkt.

ROLLBACK TO SP1;  
//Rollback completed

Produksjon:

produksjon' loading='lazy' title=produksjon

6. RELEASE SAVEPOINT-kommando

Denne kommandoen brukes til å fjerne et SAVEPOINT som vi har opprettet. Når et SAVEPOINT er utgitt, kan vi ikke lenger bruke ROLLBACK kommando for å angre transaksjoner utført siden siste SAVEPOINT. Den brukes til å starte en databasetransaksjon og brukes til å spesifisere egenskapene til transaksjonen som følger. 

Syntaks:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Eksempel

En gang lagringspunktetSP2er utgitt kan vi ikke lenger rulle tilbake til det.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

Hvorfor bruke transaksjoner i banktjenester?

I dette tilfellet uten en transaksjon risikerer du scenarier der penger trekkes fra én konto, men ikke legges til den andre, og etterlater systemet i en inkonsekvent tilstand. Transaksjoner sikrer at slike problemer unngås ved å garantere at begge operasjonene lykkes eller mislykkes sammen.

Typer SQL-transaksjoner

Det finnes forskjellige typer transaksjoner basert på deres natur og de spesifikke operasjonene de utfører:

  • Les Transaksjoner : Brukes kun til å lese dataene vanligvis med SELECT forespørsler.
  • Skriv transaksjoner : Disse innebærer å modifisere dataene i databasen med INSERT UPDATEellerDELETEoperasjoner.
  • Distribuerte transaksjoner : Disse transaksjonene spenner over flere databaser og sikrer konsistens på tvers av dem.
  • Implisitte transaksjoner : Startes automatisk av SQL Server for visse operasjoner.
  • Eksplisitte transaksjoner : Manuelt kontrollerte transaksjoner hvor brukeren starter og avslutter transaksjonen ved hjelp avBEGIN TRANSACTION COMMITogROLLBACK.

Overvåke og optimalisere SQL-transaksjoner

For å opprettholde ytelsen og forhindre problemer, bør du vurdere følgende teknikker:

j-knappen

1. Skjermlåser : Spor låseatferd og juster spørringer for å minimere låsekonflikter.

2. Begrens transaksjonsomfang : Begrens antall rader eller poster som påvirkes av en transaksjon for å fremskynde behandlingen.

3. Bruk batchbehandling : Hvis du håndterer store datamengder, deler du operasjonene inn i mindre transaksjoner eller grupper for å unngå å overvelde systemet.

Foreslått quiz Rediger Quiz 5 spørsmål

Hvilket av følgende scenarier beskriver best et brudd på egenskapen "Isolation" i ACID?

  • EN

    En transaksjon forlater databasen i en tilstand som bryter med en primærnøkkelbegrensning.

  • B

    To transaksjoner som kjører samtidig leser og skriver til de samme dataene som fører til inkonsistente resultater.

  • C

    En bruker oppdaterer en post, men et systemkrasj sletter endringen.

  • D

    En transaksjon mislykkes midtveis og alle endringene blir tilbakestilt.

Forklaring:

Dette er et klassisk eksempel på et isolasjonsbrudd der mellomtilstanden til en transaksjon er synlig for en annen.

I en bankapplikasjon innebærer en pengeoverføring å debitere en konto og kreditere en annen. Hvilken ACID-egenskap sikrer at enten begge operasjonene fullføres eller ingen av dem gjør det?

  • EN

    Isolering

  • B

    Atomitet

  • C

    Varighet

  • D

    Konsistens

Forklaring:

Atomicity sikrer at alle operasjoner innenfor en transaksjon fullføres vellykket; ellers rulles hele transaksjonen tilbake.

En transaksjon utføres og en 'COMMIT' utstedes. Umiddelbart etter at et strømbrudd oppstår. Hvilken ACID-egenskap garanterer at endringene gjort av transaksjonen fortsatt er tilstede etter at systemet starter på nytt?

  • EN

    Konsistens

  • B

    Atomitet

  • C

    Varighet

  • D

    Isolering

Forklaring:

Holdbarhet er egenskapen som sikrer at når en transaksjon først er utført, vil den forbli slik selv i tilfelle strømbrudd eller systemkrasj.

Hva er hovedformålet med 'SAVEPOINT'-kommandoen i en transaksjon?

  • EN

    Å forplikte en del av transaksjonen.

  • B

    For å markere et punkt i en transaksjon som du senere kan rulle tilbake til.

  • C

    For å lagre transaksjonens tilstand permanent.

  • D

    For å avslutte transaksjonen og gjøre alle endringer permanente.

Forklaring:

'SAVEPOINT' tillater delvis tilbakeføring i en transaksjon.

Vurder følgende transaksjon: 'START TRANSAKSJON; SETT INN ...; SAVEPUNKT A; OPPDATERING ...; SAVEPUNKT B; SLETT ...; Rull TILBAKE TIL SAVEPOINT A;' Hva er tilstanden til transaksjonen etter 'ROLLBACK'-kommandoen?

  • EN

    Hele transaksjonen rulles tilbake.

    hvordan returnere en array java
  • B

    Bare 'DELETE' er angret.

  • C

    Det oppstår en feil fordi du ikke kan rulle tilbake til et lagringspunkt som ikke er det nyeste.

  • D

    'INSERT' er lagret, men 'UPDATE' og 'DELETE' er angret.

Forklaring:

Når du ruller tilbake til 'SAVEPOINT A', angres alle endringer som er gjort etter det lagringspunktet, som er 'UPDATE' og 'DELETE'.

SQL-TRANSAKSJONERQuiz fullførte poengsummen din:  2/5Nøyaktighet: 0 %Logg inn for å se forklaring 1/5 1/5 < Previous Neste >