En SQL-transaktion är en sekvens av en eller flera SQL-operationer (t.ex.INSERT UPDATE DELETE) utförs som en enda arbetsenhet. Transaktioner säkerställer att antingen alla operationer lyckas eller så utförs ingen och bibehåller dataintegriteten.
Nyckelegenskaper för SQL-transaktioner: ACID
Integriteten hos SQL-transaktioner styrs av ACID-egenskaperna som garanterar tillförlitliga databastransaktioner. Dessa fyra egenskaper arbetar tillsammans för att garantera att databasen förblir konsekvent och tillförlitlig.
- Atomicitet: Resultatet av en transaktion kan antingen vara helt framgångsrikt eller helt misslyckat. Hela transaktionen måste återställas om en del av den misslyckas.
- Konsistens: Transaktioner upprätthåller integritetsbegränsningar genom att flytta databasen från ett giltigt tillstånd till ett annat.
- Isolering: Samtidiga transaktioner är isolerade från varandra vilket säkerställer att data är korrekta.
- Varaktighet: När en transaktion väl är genomförd förblir dess ändringar i kraft även i händelse av ett systemfel.
SQL-transaktionskontrollkommandon
I SQL transaktionskontrollkommandon hanterar utförande av SQL-operationer som säkerställer databastransaktionernas integritet och tillförlitlighet. Dessa kommandon hjälper till att hantera startbekräftelse och återställning av ändringar som gjorts i databasen. Nedan är de viktigaste transaktionskontrollkommandona i SQL förklarade med syntax och exempel för varje.
1. Kommandot BEGIN TRANSACTION
DeBEGIN TRANSACTIONkommandot markerar början på en ny transaktion. Alla SQL-satser som följer detta kommando kommer att vara en del av samma transaktion tills enCOMMIT eller ROLLBACK påträffas. Detta kommando gör inga ändringar i databasen utan startar bara transaktionen.
Syntax:
BEGIN TRANSACTION transaction_name ;Exempel på SQL-transaktion med ett banköverföringsscenario
Låt oss titta på ett exempel på en banköverföring mellan två konton. Det här exemplet visar användningen av flera frågor i en enda 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;
Om något fel uppstår, såsom ett problem medUPDATEfråga du kan användaROLLBACKför att ångra alla ändringar som gjorts under transaktionen:
ROLLBACK;Detta säkerställer att systemet inte hamnar i ett inkonsekvent tillstånd som att dra av pengar från ett konto utan att lägga till dem på ett annat.
BEGIN TRANSACTION TransferFunds;2. COMMIT-kommando
DeCOMMITkommandot används för att spara alla ändringar som gjorts under den aktuella transaktionen i databasen. När en transaktion väl har genomförts är ändringarna permanenta.
Syntax:
COMMIT;Exempel
Här är provetStudenttabell som kommer att användas för att utföra operationerna i det här exemplet. Den här tabellen innehåller grundläggande studentinformation såsom ID-namnets ålder och annan relevant information som kommer att manipuleras med olika transaktionskontrollkommandon.
StudentbordFöljande är ett exempel som skulle ta bort de poster från tabellen som har ålder = 20 och sedan COMMIT ändringarna i databasen.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Produktion
produktion3. ROLLBACK-kommando
DeROLLBACKkommandot används för att ångra alla ändringar som gjorts i den aktuella transaktionen. Den används när ett fel uppstår eller när de önskade ändringarna inte kan slutföras. Databasen kommer att återgå till det tillstånd den var i innan BEGIN TRANSACTION avrättades.
Syntax:
ROLLBACK;Exempel
Ta bort de poster från tabellen som har ålder = 20 och ROLLBACK sedan ändringarna i databasen. I det här fallet DELETE åtgärden ångras och ändringarna i databasen sparas inte.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Produktion:
produktion4. SAVEPOINT-kommando
ASAVEPOINTanvänds för att skapa en kontrollstation inom en transaktion. Vi kan rulla tillbaka till en specifikSAVEPOINTistället för att rulla tillbaka hela transaktionen. Detta gör att vi kan ångra en del av transaktionen snarare än hela transaktionen.
Syntax:
SAVEPOINT SAVEPOINT_NAME;Exempel
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Produktion:
produktionFörklaring:
Från exemplet ovan Exempeltabell1 Ta bort de poster från tabellen som har ålder = 20 och ÅTERBAKA sedan ändringarna i databasen genom att behålla Spara poäng. Här skapas SP1 först SAVEPOINT före radering. I detta exempel har en radering skett. Efter radering igen skapas SAVEPOINT SP2.
5. ROLL TILLBAKA TILL SAVEPOINT
DeROLLBACK TO SAVEPOINTkommandot låter oss återställa transaktionen till en specifik räddningspunkt och effektivt ångra ändringar som gjorts efter den punkten.
Syntax:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Exempel
Borttagning har skett, låt oss anta att vi har ändrat oss och beslutat att ROLLBACK till SAVEPOINT som vi identifierade som SP1 som är före raderingen. Så i det här falletDELETEoperationen ångras och transaktionen återställs till det tillstånd den var i vidSP1räddningspunkt.
ROLLBACK TO SP1;
//Rollback completed
Produktion:
produktion6. RELEASE SAVEPOINT Kommando
Detta kommando används för att ta bort en SAVEPOINT som vi har skapat. När en SAVEPOINT väl har släppts kan vi inte längre använda ROLLBACK kommando för att ångra transaktioner som utförts sedan den senaste SAVEPOINT. Den används för att initiera en databastransaktion och används för att specificera egenskaperna för transaktionen som följer.
Syntax:
RELEASE SAVEPOINT SAVEPOINT_NAME;Exempel
En gång räddningspunktenSP2är släppt kan vi inte längre rulla tillbaka till det.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Varför använda transaktioner i bankverksamhet?
I det här fallet utan en transaktion riskerar du scenarier där pengar dras från ett konto men inte läggs till det andra och lämnar systemet i ett inkonsekvent tillstånd. Transaktioner säkerställer att sådana problem undviks genom att garantera att båda operationerna lyckas eller misslyckas tillsammans.
Typer av SQL-transaktioner
Det finns olika typer av transaktioner baserat på deras karaktär och de specifika operationer de utför:
- Läs Transaktioner : Används för att endast läsa data vanligtvis med
SELECTfrågor. - Skriv transaktioner : Dessa innebär modifiering av data i databasen med
INSERTUPDATEellerDELETEoperationer. - Distribuerade transaktioner : Dessa transaktioner spänner över flera databaser och säkerställer konsistens över dem.
- Implicita transaktioner : Startas automatiskt av SQL Server för vissa operationer.
- Explicita transaktioner : Manuellt styrda transaktioner där användaren börjar och avslutar transaktionen med hjälp av
BEGIN TRANSACTIONCOMMITochROLLBACK.
Övervakning och optimering av SQL-transaktioner
För att bibehålla prestanda och förhindra problem, överväg följande tekniker:
1. Monitorlås : Spåra låsbeteende och justera frågor för att minimera låskonflikter.
2. Begränsa transaktionens omfattning : Begränsa antalet rader eller poster som påverkas av en transaktion för att påskynda behandlingen.
konvertera sträng till datum
3. Använd batchbearbetning : Om du hanterar stora mängder data dela upp verksamheten i mindre transaktioner eller batcher för att undvika att systemet överbelastas.
Förslag på frågesport Redigera frågesport 5 frågorVilket av följande scenarier beskriver bäst en kränkning av egenskapen "Isolation" i ACID?
- A
En transaktion lämnar databasen i ett tillstånd som bryter mot en primärnyckelbegränsning.
- B
Två transaktioner som körs samtidigt läser och skriver till samma data vilket leder till inkonsekventa resultat.
- C
En användare uppdaterar en post men en systemkrasch raderar ändringen.
- D
En transaktion misslyckas halvvägs och alla dess ändringar återställs.
Detta är ett klassiskt exempel på en isoleringsöverträdelse där mellantillståndet för en transaktion är synligt för en annan.
I en bankapplikation innebär en överföring av pengar att debitera ett konto och kreditera ett annat. Vilken ACID-egenskap säkerställer att båda operationerna slutförs eller inte gör det?
- A
Isolering
- B
Atomicitet
- C
Varaktighet
- D
Konsistens
Atomicity säkerställer att alla operationer inom en transaktion slutförs framgångsrikt; annars rullas hela transaktionen tillbaka.
En transaktion utförs och ett "COMMIT" utfärdas. Omedelbart efter att ett strömavbrott inträffar. Vilken ACID-egenskap garanterar att ändringarna som gjorts av transaktionen fortfarande finns kvar efter att systemet startat om?
- A
Konsistens
- B
Atomicitet
- C
Varaktighet
- D
Isolering
Hållbarhet är egenskapen som säkerställer att när en transaktion väl har genomförts kommer den att förbli så även i händelse av strömavbrott eller systemkrasch.
Vad är det primära syftet med kommandot 'SAVEPOINT' i en transaktion?
- A
Att begå en del av transaktionen.
- B
För att markera en punkt i en transaktion som du senare kan rulla tillbaka till.
- C
För att permanent spara transaktionens tillstånd.
- D
För att avsluta transaktionen och göra alla ändringar permanenta.
'SAVEPOINT' tillåter partiella återställningar inom en transaktion.
Tänk på följande transaktion: 'STARTA TRANSAKTION; INFOGA ...; SPARAPUNKT A; UPPDATERING ...; Räddningspunkt B; DELETE ...; ROLLBACK TILL SAVEPOINT A;' Vad är läget för transaktionen efter kommandot 'ROLLBACK'?
- A
Hela transaktionen rullas tillbaka.
- B
Endast "RADERA" ångras.
- C
Ett fel uppstår eftersom du inte kan rulla tillbaka till en räddningspunkt som inte är den senaste.
- D
'INSERT' sparas men 'UPPDATERING' och 'DELETE' har ångrats.
Genom att rulla tillbaka till 'SAVEPOINT A' ångras alla ändringar som gjorts efter den räddningspunkten som är 'UPDATE' och 'DELETE'.
Quiz har slutförts framgångsrikt. Ditt resultat: 2/5Noggrannhet: 0 %Logga in för att se förklaring 1/5 1/5 < Previous Nästa >