Transaktionshantering i DBMS: Tillstånd, typer och ACID

⚡ Smart sammanfattning

Databastransaktionshantering behandlar en eller flera databasoperationer som en enda logisk enhet som flyttar databasen från ett konsekvent tillstånd till ett annat. Den förlitar sig på ACID-egenskaper, definierade transaktionstillstånd och scheman för att hålla samtidig åtkomst korrekt.

  • 🔁 Kärnenhet: En transaktion grupperar relaterade läs- och skrivoperationer så att de lyckas eller misslyckas tillsammans, aldrig halvvägs.
  • 🧪 SYRA-egenskaper: Atomicitet, konsistens, isolering och hållbarhet garanterar korrekta resultat även vid fel eller samtidighet.
  • 🚦 Transaktionsstater: Aktiv, delvis committad, committad, misslyckad och avslutad beskriver en transaktions livscykel.
  • 👥 Varför samtidighet: En databas är delad, så många transaktioner körs samtidigt och får inte korrumpera varandras data.
  • 📋 scheman: Ett schema ordnar operationerna för parallella transaktioner samtidigt som varje transaktions interna sekvens bevaras.
  • 🔗 Serialiserbarhet: Ett samtidigt schema är korrekt när dess resultat är lika med någon seriell exekvering, bedömt utifrån konflikt eller vyekvivalens.
  • ↩️ Återhämtning: En misslyckad transaktion återställs så att dess delvisa skrivningar aldrig når den allokerade databasen.

Transaktionshantering i DBMS

Vad är en databastransaktion?

A Databastransaktion är en logisk bearbetningsenhet i ett databashanteringssystem som innefattar en eller flera databasåtkomstoperationer. I ett nötskal representerar databastransaktioner verkliga händelser i alla företag.

Alla typer av databasåtkomstoperationer som hålls mellan början och slut av transaktionssatser betraktas som en enda logisk transaktion i DBMS. Under transaktionen är databasen inkonsekvent. Först när transaktionen har genomförts ändras tillståndet från ett konsekvent tillstånd till ett annat.

Databastransaktion som rör sig mellan konsekventa tillstånd
Databastransaktion

Fakta om databastransaktioner

  • En transaktion är en programenhet vars exekvering kan ändra innehållet i en databas eller inte.
  • Transaktionskonceptet i DBMS exekveras som en enda enhet.
  • Om databasoperationerna inte uppdaterar databasen utan bara hämtar data kallas denna typ av transaktion en skrivskyddad transaktion.
  • En lyckad transaktion kan ändra databasen från ett KONSISTENT TILLSTÅND till ett annat.
  • DBMS-transaktioner måste vara atomära, konsekventa, isolerade och hållbara.
  • Om databasen var i ett inkonsekvent tillstånd före en transaktion, skulle den förbli i det inkonsekventa tillståndet efter transaktionen.

Varför behöver du samtidighet i transaktioner?

En databas är en delad resurs. Den används av många användare och processer samtidigt. Exempel inkluderar banksystem, järnvägs- och flygbokningssystem, aktiemarknadsövervakning samt stormarknaders lagerhantering och kassor.

Att inte hantera samtidig åtkomst kan skapa problem som:

  • Hårdvarufel och systemkrascher.
  • Samtidigt utförande av samma transaktion, dödläge, eller långsam prestanda.

Att kontrollera denna delade åtkomst är en uppgift för samtidighetskontroll, som använder låsning och tidsstämplar för att sammanfoga transaktioner på ett säkert sätt. Innan dess är det bra att veta vilka tillstånd en transaktion passerar igenom.

Transaktionsstater

De olika tillstånden för ett transaktionskoncept i DBMS listas nedan:

Ange BESKRIVNING
Aktivt tillstånd En transaktion går in i aktivt tillstånd när exekveringsprocessen börjar. Under detta tillstånd kan läs- eller skrivoperationer utföras.
Delvis engagerad En transaktion går in i det delvis bekräftade tillståndet efter att transaktionen är avslutad.
Engagerad stat När transaktionen når det bekräftade tillståndet har den slutförts och alla dess ändringar registreras permanent i databasen.
Misslyckat tillstånd En transaktion anses misslyckad när någon av kontrollerna misslyckas, eller om transaktionen avbryts medan den är i aktivt tillstånd.
Avslutad stat En transaktions tillstånd når det avslutade tillståndet när transaktionen lämnar systemet och inte kan startas om.

Tillståndsövergångsdiagram för en databastransaktion

Låt oss studera en tillståndsövergångsdiagram som belyser hur en transaktion rör sig mellan dessa olika stater.

  1. När en transaktion börjar köras blir den aktiv. Den kan utföra en läs- eller skrivoperation.
  2. När LÄS- och SKRIV-operationerna är klara når transaktionen det delvis allokerade läget.
  3. Därefter måste vissa återställningsprotokoll säkerställa att ett systemfel inte leder till att transaktionens ändringar inte kan registreras permanent. Om denna kontroll lyckas genomförs transaktionen och går in i det bekräftade tillståndet.
  4. Om kontrollen misslyckas går transaktionen till tillståndet misslyckad.
  5. Om transaktionen avbryts medan den är i aktivt tillstånd, återgår den till misslyckat tillstånd. Transaktionen bör återställas för att ångra effekten av dess skrivåtgärder på databasen.
  6. Det avslutade tillståndet hänvisar till transaktionen som lämnar systemet.

Vad är ACID-egenskaper?

SYRA egenskaper används för att upprätthålla databasens integritet under transaktionsbehandling. ACID i DBMS står för Atomicity, Cpågående, Isolation, och Dhållbarhet.

  • Atomisstad: En transaktion är en enda operationsenhet. Antingen kör du det helt eller så kör du det inte alls. Det kan inte vara partiell avrättning.
  • Konsistens: När transaktionen väl är genomförd bör den flyttas från ett konsekvent tillstånd till ett annat.
  • Isolering: En transaktion bör utföras isolerat från andra transaktioner. Under samtidig utförande bör mellanliggande resultat från samtidigt utförda transaktioner inte göras tillgängliga för varandra.
  • Hållbarhet: Efter att en transaktion har slutförts bör ändringarna i databasen bestå, även vid systemfel.

ACID-egenskap i DBMS med exempel

Nedan följer ett exempel på ACID-egenskapen i DBMS:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

Transaktion 1 är överföring av $50 från konto X till konto Y.

Transaktion 2 krediterar varje konto med en räntebetalning på 10 %.

Om båda transaktionerna skickas in tillsammans finns det ingen garanti för att transaktion 1 kommer att genomföras före transaktion 2 eller vice versa. Oavsett order måste resultatet bli som om transaktionerna sker i serie, en efter en.

Typer av transaktioner

Baserat på tillämpningsområden:

  • Icke-distribuerad vs. distribuerad.
  • Kompenserande transaktioner.
  • Transaktionstidpunkt.
  • Online kontra batch.

Baserat på handlingar:

  • Tvåstegs.
  • Begränsad.
  • Handlingsmodell.

Baserat på struktur:

  • Platta eller enkla transaktioner: består av en sekvens av primitiva operationer som utförs mellan en start- och slutoperation.
  • Kapslade transaktioner: en transaktion som innehåller andra transaktioner.
  • Arbetsflöde.

Vad är ett schema?

Ett schema är en process där man skapar en enda grupp av flera parallella transaktioner och kör dem en efter en. Det bör bevara den ordning i vilken instruktionerna visas i varje transaktion. Om två transaktioner körs samtidigt kan resultatet av en transaktion påverka utdata från den andra.

Exempelvis

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Om Transaktion 2 genomförs före Transaktion 1 kommer inaktuell information om produktkvantiteten att läsas. Därför krävs scheman.

Parallell exekvering i en databas är oundviklig. Men parallell exekvering är tillåten när det finns en ekvivalensrelation mellan de samtidigt exekverande transaktionerna. Denna ekvivalens är av tre typer.

Resultatekvivalens: Om två scheman visar samma resultat efter körning kallas det ett resultatekvivalent schema. De kan erbjuda samma resultat för vissa värden och olika resultat för en annan uppsättning värden. Till exempel uppdaterar en transaktion produktkvantiteten medan en annan uppdaterar kunduppgifter.

Visa ekvivalens: Vyekvivalens uppstår när transaktionerna i båda scheman utför en liknande åtgärd. Till exempel infogar en transaktion produktinformation i produkttabellen, medan en annan transaktion infogar produktinformation i arkivtabellen. Transaktionen är densamma, men tabellerna är olika.

Konfliktlikvivalens: I det här fallet uppdaterar eller visar två transaktioner samma datamängd. Det finns en konflikt mellan transaktionerna, eftersom exekveringsordningen påverkar utdata.

Vad är serialiseringsbarhet?

Serialiserbarhet är processen att söka efter ett samtidigt schema vars utdata är lika med ett serieschema där transaktioner exekveras efter varandra. Beroende på schematyp finns det två typer av serialiserbarhet:

  • Konfliktserialiserbarhet.
  • Visa serialiserbarhet.

De två skiljer sig åt i hur strikt de bedömer likvärdighet, vilket sammanfattas nedan.

Aspect Konfliktserialiserbarhet Visa serialiserbarhet
Bas Ordning för motstridiga operationer Läs-från- och slut-skriv-relationer
Testa Precedensgrafen måste vara acyklisk Visa motsvarighet till ett serieschema
stränghet Strängare, en delmängd Bredare, inkluderar blindskrivning
Kostnad för att kontrollera Effektiv Beräkningsmässigt svår

Varje konfliktserialiserbart schema är också vyserialiserbart, men inte tvärtom, vilket är anledningen till att konfliktserialiserbarhet är det praktiska test som ett DBMS tillämpar.

Vanliga frågor

En commit-funktion gör ändringarna i en transaktion permanenta i databasen. En rollback-funktion ångrar alla ändringar sedan transaktionen påbörjades och återställer databasen till det enhetliga tillstånd som fanns innan den startade.

Atomicity. Om en krasch inträffar mitt i processen säkerställer atomicitet att det delvisa arbetet kasseras, så transaktionen behandlas som om den aldrig körts. Hållbarhet skyddar sedan det allokerade arbetet efter återställning.

AI analyserar lock waits och deadlock-grafer för att identifiera transaktioner som blockerar andra, och rekommenderar sedan en isoleringsnivå eller indexändring som minskar konkurrens utan att försvaga korrektheten.

Till viss del. Genom att lära sig de mönster för låsförfrågningar som föregick tidigare dödlägen kan en modell tidigt flagga en riskabel transaktionsmix, vilket gör att schemaläggaren kan fördröja eller ändra ordning innan en cykel bildas.

Ett seriellt schema kör en transaktion helt innan nästa startar, så ingen sammanflätning kan skada data. Det är långsamt, vilket är anledningen till att målet är ett samtidigt schema som kan serialiseras till det.

Sammanfatta detta inlägg med: