En SQL-transaktion er en sekvens af en eller flere SQL-operationer (f.INSERT UPDATE DELETE) udført som en enkelt arbejdsenhed. Transaktioner sikrer, at enten alle operationer lykkes, eller at ingen udføres og opretholder dataintegriteten.
Nøgleegenskaber for SQL-transaktioner: ACID
Integriteten af SQL-transaktioner er styret af ACID-egenskaberne, som garanterer pålidelige databasetransaktioner. Disse fire egenskaber arbejder sammen for at garantere, at databasen forbliver konsistent og pålidelig.
- Atomicitet: Resultatet af en transaktion kan enten være fuldstændig vellykket eller fuldstændig mislykket. Hele transaktionen skal rulles tilbage, hvis en del af den mislykkes.
- Konsistens: Transaktioner opretholder integritetsbegrænsninger ved at flytte databasen fra en gyldig tilstand til en anden.
- Isolation: Samtidige transaktioner er isoleret fra hinanden, hvilket sikrer nøjagtigheden af dataene.
- Holdbarhed: Når først en transaktion er begået, forbliver dens ændringer i kraft, selv i tilfælde af en systemfejl.
SQL-transaktionskontrolkommandoer
I SQL administrerer transaktionskontrolkommandoer udførelse af SQL-operationer, der sikrer integriteten og pålideligheden af databasetransaktioner. Disse kommandoer hjælper med at administrere start commit og tilbagerulning af ændringer foretaget i databasen. Nedenfor er de vigtigste transaktionskontrolkommandoer i SQL forklaret med syntaks og eksempler for hver.
1. BEGIN TRANSACTION Kommando
DeBEGIN TRANSACTIONkommando markerer begyndelsen af en ny transaktion. Alle SQL-sætninger, der følger denne kommando, vil være en del af den samme transaktion indtil aCOMMIT eller ROLLBACK er stødt på. Denne kommando foretager ingen ændringer i databasen, den starter bare transaktionen.
Syntaks:
BEGIN TRANSACTION transaction_name ;Eksempel på SQL-transaktion med et bankoverførselsscenarie
Lad os se på et eksempel på en bankoverførsel mellem to konti. Dette eksempel viser brugen af flere forespørgsler i en enkelt transaktion.
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 der opstår en fejl, såsom et problem medUPDATEforespørgsel du kan brugeROLLBACKfor at fortryde alle ændringer foretaget under transaktionen:
ROLLBACK;Dette sikrer, at systemet ikke ender i en inkonsekvent tilstand, såsom at trække penge fra én konto uden at føje dem til en anden.
indsættelsessortering
BEGIN TRANSACTION TransferFunds;2. COMMIT-kommando
DeCOMMITkommandoen bruges til at gemme alle ændringer foretaget under den aktuelle transaktion i databasen. Når først en transaktion er gennemført, er ændringerne permanente.
Syntaks:
COMMIT;Eksempel
Her er prøvenStudenttabel, der vil blive brugt til at udføre handlingerne i dette eksempel. Denne tabel indeholder grundlæggende elevoplysninger såsom ID-navnets alder og andre relevante oplysninger, der vil blive manipuleret ved hjælp af forskellige transaktionskontrolkommandoer.
ElevbordFølgende er et eksempel, som ville slette de poster fra tabellen, som har alder = 20 og derefter COMMIT ændringerne i databasen.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Produktion
produktion3. ROLLBACK-kommando
DeROLLBACKkommandoen bruges til at fortryde alle ændringer foretaget i den aktuelle transaktion. Den bruges, når der opstår en fejl, eller når de ønskede ændringer ikke kan gennemføres. Databasen vil vende tilbage til den tilstand, den var i før BEGIN TRANSACTION blev henrettet.
Syntaks:
ROLLBACK;Eksempel
Slet de poster fra tabellen, som har alder = 20, og RULLER derefter ændringerne i databasen. I dette tilfælde DELETE handlingen fortrydes, og ændringerne til databasen gemmes ikke.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Produktion:
produktion4. SAVEPOINT-kommando
ENSAVEPOINTbruges til at skabe en kontrolpunkt inden for en transaktion. Vi kan rulle tilbage til en bestemtSAVEPOINTi stedet for at rulle hele transaktionen tilbage. Dette giver os mulighed for at fortryde en del af transaktionen i stedet for hele transaktionen.
Syntaks:
SAVEPOINT SAVEPOINT_NAME;Eksempel
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Produktion:
produktionForklaring:
hvad er hive
Fra ovenstående eksempel Eksempeltabel1 Slet de poster fra tabellen, som har alder = 20, og RULLER derefter ændringerne i databasen tilbage ved at beholde Savepoints. Her oprettes SP1 først SAVEPOINT før sletning. I dette eksempel er der sket en sletning. Efter sletning oprettes SAVEPOINT SP2 igen.
5. TILBAGE TIL SAVEPOINT
DeROLLBACK TO SAVEPOINTkommandoen giver os mulighed for at rulle transaktionen tilbage til et specifikt lagringspunkt, hvilket effektivt fortryder ændringer foretaget efter det tidspunkt.
Syntaks:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Eksempel
Sletningen har fundet sted, lad os antage, at vi har ombestemt os og besluttet at RULLE TILBAGE til det SAVEPOINT, som vi identificerede som SP1, som er før sletningen. Så i dette tilfældeDELETEhandlingen fortrydes, og transaktionen returneres til den tilstand, den var iSP1sparepunkt.
ROLLBACK TO SP1;
//Rollback completed
Produktion:
produktion6. RELEASE SAVEPOINT Kommando
Denne kommando bruges til at fjerne et SAVEPOINT, som vi har oprettet. Når et SAVEPOINT er blevet frigivet, kan vi ikke længere bruge ROLLBACK kommando til at fortryde transaktioner udført siden sidste SAVEPOINT. Det bruges til at starte en databasetransaktion og bruges til at specificere karakteristika for den efterfølgende transaktion.
Syntaks:
RELEASE SAVEPOINT SAVEPOINT_NAME;Eksempel
En gang sparepunktetSP2er frigivet, kan vi ikke længere rulle tilbage til det.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Hvorfor bruge transaktioner i bankvirksomhed?
I dette tilfælde uden en transaktion risikerer du scenarier, hvor penge trækkes fra den ene konto, men ikke tilføjes til den anden, hvilket efterlader systemet i en inkonsekvent tilstand. Transaktioner sikrer, at sådanne problemer undgås ved at garantere, at begge operationer lykkes eller mislykkes sammen.
Typer af SQL-transaktioner
Der er forskellige typer transaktioner baseret på deres karakter og de specifikke operationer, de udfører:
- Læs Transaktioner : Bruges til kun at læse dataene typisk med
SELECTforespørgsler. - Skriv transaktioner : Disse involverer ændring af dataene i databasen med
INSERTUPDATEellerDELETEoperationer. - Distribuerede transaktioner : Disse transaktioner spænder over flere databaser og sikrer konsistens på tværs af dem.
- Implicitte transaktioner : Startes automatisk af SQL Server til visse operationer.
- Eksplicitte transaktioner : Manuelt styrede transaktioner, hvor brugeren begynder og afslutter transaktionen vha
BEGIN TRANSACTIONCOMMITogROLLBACK.
Overvågning og optimering af SQL-transaktioner
For at bevare ydeevnen og forhindre problemer skal du overveje følgende teknikker:
sql ddl kommandoer
1. Skærmlåse : Spor låseadfærd og juster forespørgsler for at minimere låsekonflikter.
2. Begræns transaktionsomfang : Begræns antallet af rækker eller poster, der påvirkes af en transaktion for at fremskynde behandlingen.
3. Brug batchbehandling : Hvis du håndterer store mængder data, opdeler du operationerne i mindre transaktioner eller batches for at undgå at overvælde systemet.
Foreslået quiz Rediger quiz 5 spørgsmålHvilket af følgende scenarier beskriver bedst en krænkelse af egenskaben 'Isolation' i ACID?
- EN
En transaktion efterlader databasen i en tilstand, der overtræder en primær nøglebegrænsning.
- B
To transaktioner, der kører samtidigt, læser og skriver til de samme data, hvilket fører til inkonsistente resultater.
- C
En bruger opdaterer en post, men et systemnedbrud sletter ændringen.
- D
En transaktion mislykkes midtvejs, og alle dens ændringer tilbageføres.
Dette er et klassisk eksempel på en isolationsovertrædelse, hvor den mellemliggende tilstand af en transaktion er synlig for en anden.
I en bankapplikation involverer en pengeoverførsel debitering af en konto og kreditering af en anden. Hvilken ACID-egenskab sikrer, at enten fuldføres begge operationer, eller ingen af dem gør det?
- EN
Isolation
- B
Atomicitet
- C
Holdbarhed
- D
Konsistens
Atomicity sikrer, at alle operationer inden for en transaktion gennemføres med succes; ellers rulles hele transaktionen tilbage.
En transaktion udføres og en 'COMMIT' udstedes. Umiddelbart efter et strømsvigt opstår. Hvilken ACID-egenskab garanterer, at ændringerne foretaget af transaktionen stadig er til stede efter at systemet genstartes?
- EN
Konsistens
- B
Atomicitet
- C
Holdbarhed
- D
Isolation
Holdbarhed er den egenskab, der sikrer, at når en transaktion først er begået, vil den forblive sådan selv i tilfælde af strømsvigt eller systemnedbrud.
Hvad er det primære formål med 'SAVEPOINT'-kommandoen i en transaktion?
- EN
At begå en del af transaktionen.
- B
For at markere et punkt i en transaktion, som du senere kan rulle tilbage til.
- C
For permanent at gemme transaktionens tilstand.
- D
For at afslutte transaktionen og gøre alle ændringer permanente.
'SAVEPOINT' giver mulighed for delvise rollbacks inden for en transaktion.
Overvej følgende transaktion: 'START TRANSAKTION; INDSÆT ...; SAVEPUNKT A; OPDATERING ...; SAVEPUNKT B; SLET ...; TILBAGE TIL SAVEPOINT A;' Hvad er status for transaktionen efter kommandoen 'ROLLBACK'?
- EN
Hele transaktionen rulles tilbage.
java konverter char til streng
- B
Kun 'DELETE' fortrydes.
- C
Der opstår en fejl, fordi du ikke kan rulle tilbage til et lagringspunkt, der ikke er det seneste.
- D
'INSERT' er gemt, men 'OPDATERING' og 'SLET' er fortrydet.
Når du ruller tilbage til 'SAVEPOINT A', fortrydes alle ændringer, der er foretaget efter det savepoint, som er 'OPDATERING' og 'DELETE'.
Quiz gennemførte med succes Din score: 2/5Nøjagtighed: 0 %Log ind for at se forklaring 1/5 1/5 < Previous Næste >