Transaktionsstyring i DBMS: Tilstande, typer og ACID

โšก Smart opsummering

Database Transaction Management behandler en eller flere databaseoperationer som en enkelt logisk enhed, der flytter databasen fra รฉn konsistent tilstand til en anden. Den er afhรฆngig af ACID-egenskaber, definerede transaktionstilstande og tidsplaner for at holde samtidig adgang korrekt.

  • ๐Ÿ” Kerneenhed: En transaktion grupperer relaterede lรฆse- og skriveoperationer, sรฅ de lykkes eller fejler sammen, aldrig halvvejs.
  • ๐Ÿงช SYRE egenskaber: AtomIsitet, konsistens, isolation og holdbarhed garanterer korrekte resultater, selv under fejl eller samtidighed.
  • ๐Ÿšฆ Transaktionsstater: Aktiv, delvist committet, committet, mislykket og afsluttet beskriver en transaktions livscyklus.
  • ๐Ÿ‘ฅ Hvorfor samtidighed: En database er delt, sรฅ mange transaktioner kรธrer pรฅ รฉn gang og mรฅ ikke beskadige hinandens data.
  • ???? Tidsplaner: En tidsplan beordrer handlingerne i parallelle transaktioner, samtidig med at hver transaktions interne rรฆkkefรธlge bevares.
  • ๐Ÿ”— Serialiserbarhed: En samtidig tidsplan er korrekt, nรฅr dens resultat er lig med en eller anden seriel udfรธrelse, bedรธmt ud fra konflikt eller visningsรฆkvivalens.
  • โ†ฉ๏ธ Genopretning: En mislykket transaktion rulles tilbage, sรฅ dens delvise skrivninger aldrig nรฅr den committede database.

Transaktionsstyring i DBMS

Hvad er en databasetransaktion?

A Databasetransaktion er en logisk behandlingsenhed i et DBMS, som involverer en eller flere databaseadgangsoperationer. Kort sagt reprรฆsenterer databasetransaktioner virkelige begivenheder i enhver virksomhed.

Alle typer databaseadgangsoperationer, der afholdes mellem start- og sluttransaktionssรฆtningerne, betragtes som en enkelt logisk transaktion i DBMS. Under transaktionen er databasen inkonsistent. Fรธrst nรฅr transaktionen er committet, รฆndres tilstanden fra รฉn konsistent tilstand til en anden.

Databasetransaktion bevรฆger sig mellem konsistente tilstande
Databasetransaktion

Fakta om databasetransaktioner

  • En transaktion er en programenhed, hvis udfรธrelse kan รฆndre indholdet af en database eller ikke.
  • Transaktionskonceptet i DBMS udfรธres som en enkelt enhed.
  • Hvis databaseoperationerne ikke opdaterer databasen, men kun henter data, kaldes denne type transaktion en skrivebeskyttet transaktion.
  • En vellykket transaktion kan รฆndre databasen fra รฉn KONSISTENT TILSTAND til en anden.
  • DBMS-transaktioner skal vรฆre atomare, konsistente, isolerede og holdbare.
  • Hvis databasen var i en inkonsistent tilstand fรธr en transaktion, ville den forblive i den inkonsistente tilstand efter transaktionen.

Hvorfor har du brug for samtidighed i transaktioner?

En database er en delt ressource. Den bruges af mange brugere og processer samtidigt. Eksempler omfatter banksystemer, jernbane- og flyreservationssystemer, aktiemarkedsovervรฅgning samt supermarkeders lagerbeholdning og kasser.

Hvis du ikke administrerer samtidig adgang, kan det skabe problemer som:

  • Hardwarefejl og systemnedbrud.
  • Samtidig udfรธrelse af samme transaktion, dรธdvande, eller langsom ydeevne.

Det er opgaven for at kontrollere denne delte adgang samtidighedskontrol, som bruger lรฅsning og tidsstempler til at sammenflette transaktioner sikkert. Fรธr det er det nyttigt at kende de tilstande, en transaktion gรฅr igennem.

Transaktionstilstande

De forskellige tilstande af et transaktionskoncept i DBMS er angivet nedenfor:

Tilstand Beskrivelse
Aktiv tilstand En transaktion gรฅr ind i aktiv tilstand, nรฅr udfรธrelsesprocessen begynder. I denne tilstand kan lรฆse- eller skriveoperationer udfรธres.
Delvist engageret En transaktion gรฅr ind i den delvist committede tilstand efter transaktionens afslutning.
Engageret stat Nรฅr transaktionen nรฅr den committede tilstand, er den udfรธrt korrekt, og alle dens รฆndringer registreres permanent i databasen.
Mislykket tilstand En transaktion betragtes som mislykket, nรฅr en af โ€‹โ€‹kontrollerne fejler, eller hvis transaktionen afbrydes, mens den er i aktiv tilstand.
Opsagt stat En transaktions tilstand nรฅr den afsluttede tilstand, nรฅr transaktionen forlader systemet og ikke kan genstartes.

Tilstandsovergangsdiagram for en databasetransaktion

Lad os studere en tilstandsovergangsdiagram der fremhรฆver, hvordan en transaktion bevรฆger sig mellem disse forskellige stater.

  1. Nรฅr en transaktion starter udfรธrelsen, bliver den aktiv. Den kan udfรธre en Lร†SNINGS- eller SKRIVNINGSoperation.
  2. Nรฅr Lร†SNINGS- og SKRIVNINGSoperationerne er fuldfรธrt, nรฅr transaktionen den delvist committede tilstand.
  3. Dernรฆst skal nogle gendannelsesprotokoller sikre, at en systemfejl ikke resulterer i, at transaktionens รฆndringer ikke kan registreres permanent. Hvis denne kontrol lykkes, committes transaktionen og gรฅr i committed-tilstand.
  4. Hvis kontrollen mislykkes, gรฅr transaktionen til tilstanden mislykket.
  5. Hvis transaktionen afbrydes, mens den er i aktiv tilstand, gรฅr den tilbage til den fejlede tilstand. Transaktionen skal rulles tilbage for at fortryde effekten af โ€‹โ€‹dens skriveoperationer pรฅ databasen.
  6. Den afsluttede tilstand refererer til transaktionen, der forlader systemet.

Hvad er ACID-egenskaber?

SYRE egenskaber bruges til at opretholde databasens integritet under transaktionsbehandling. ACID i DBMS stรฅr for Atomicitet, Cvedholdenhed, Isolation, og Dholdbarhed.

  • Atomisby: En transaktion er en enkelt operationsenhed. Du udfรธrer det enten helt eller slet ikke. Der kan ikke vรฆre tale om delvis udfรธrelse.
  • Konsistens: Nรฅr transaktionen er udfรธrt, bรธr den flytte fra en konsistent tilstand til en anden.
  • Isolering: En transaktion bรธr udfรธres isoleret fra andre transaktioner. Under samtidig udfรธrelse bรธr mellemliggende resultater fra samtidigt udfรธrte transaktioner ikke stilles til rรฅdighed for hinanden.
  • Holdbarhed: Efter en vellykket afslutning af en transaktion bรธr รฆndringerne i databasen bevares, selv i tilfรฆlde af systemfejl.

ACID-egenskab i DBMS med eksempel

Nedenfor er et eksempel pรฅ ACID-egenskaben 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 er at overfรธre $50 fra konto X til konto Y.

Transaktion 2 krediterer hver konto med en rentebetaling pรฅ 10%.

Hvis begge transaktioner indsendes sammen, er der ingen garanti for, at transaktion 1 udfรธres fรธr transaktion 2 eller omvendt. Uanset ordren skal resultatet vรฆre, som om transaktionerne finder sted serielt, den ene efter den anden.

Typer af transaktioner

Baseret pรฅ anvendelsesomrรฅder:

  • Ikke-distribueret vs. distribueret.
  • Kompenserende transaktioner.
  • Transaktionstidspunkt.
  • Online vs. batch.

Baseret pรฅ handlinger:

  • To-trins.
  • Begrรฆnset.
  • Handlingsmodel.

Baseret pรฅ struktur:

  • Flade eller simple transaktioner: bestรฅr af en sekvens af primitive operationer udfรธrt mellem en start- og slutoperation.
  • Indlejrede transaktioner: en transaktion, der indeholder andre transaktioner.
  • Workflow.

Hvad er et skema?

En tidsplan er en proces, hvor man opretter en enkelt gruppe af flere parallelle transaktioner og udfรธrer dem en efter en. Den skal bevare den rรฆkkefรธlge, som instruktionerne vises i i hver transaktion. Hvis to transaktioner udfรธres pรฅ samme tid, kan resultatet af den ene transaktion pรฅvirke outputtet af den anden.

Eksempel

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

Hvis Transaktion 2 udfรธres fรธr Transaktion 1, vil forรฆldede oplysninger om produktmรฆngden blive lรฆst. Derfor er tidsplaner pรฅkrรฆvet.

Parallel udfรธrelse i en database er uundgรฅelig. Men parallel udfรธrelse er tilladt, nรฅr der er en รฆkvivalensrelation mellem de samtidigt udfรธrende transaktioner. Denne รฆkvivalens er af tre typer.

Resultatรฆkvivalens: Hvis to tidsplaner viser det samme resultat efter udfรธrelse, kaldes det en resultatรฆkvivalent tidsplan. De kan tilbyde det samme resultat for nogle vรฆrdier og forskellige resultater for et andet sรฆt vรฆrdier. For eksempel opdaterer รฉn transaktion produktmรฆngden, mens en anden opdaterer kundeoplysninger.

Vis รฆkvivalens: Visningsรฆkvivalens opstรฅr, nรฅr transaktionerne i begge tidsplaner udfรธrer en lignende handling. For eksempel indsรฆtter รฉn transaktion produktoplysninger i produkttabellen, mens en anden transaktion indsรฆtter produktoplysninger i arkivtabellen. Transaktionen er den samme, men tabellerne er forskellige.

Konfliktรฆkvivalens: I dette tilfรฆlde opdaterer eller viser to transaktioner det samme datasรฆt. Der er en konflikt mellem transaktionerne, da udfรธrelsesrรฆkkefรธlgen vil pรฅvirke outputtet.

Hvad er serialiseringsevne?

Serialiserbarhed er processen med at sรธge efter en samtidig tidsplan, hvis output er lig med en seriel tidsplan, hvor transaktioner udfรธres efter hinanden. Afhรฆngigt af typen af โ€‹โ€‹tidsplan er der to typer serialiserbarhed:

  • Konfliktserialiserbarhed.
  • Se serialiserbarhed.

De to adskiller sig i, hvor strengt de vurderer รฆkvivalens, som opsummeret nedenfor.

Aspect Konfliktserialiserbarhed Vis serialiserbarhed
Basis Rรฆkkefรธlgen af โ€‹โ€‹modstridende operationer Lรฆs-fra- og slut-skriv-relationer
Test Prรฆcedensgrafen skal vรฆre acyklisk Vis รฆkvivalens til en seriel tidsplan
Strenghed Strengere, en delmรฆngde Bredere, inkluderer blinde skrivninger
Pris for at tjekke Effektiv Beregningsmรฆssigt vanskelig

Enhver konfliktserialiserbar tidsplan er ogsรฅ visningsserialiserbar, men ikke omvendt, hvilket er grunden til, at konfliktserialiserbarhed er den praktiske test, et DBMS anvender.

Ofte Stillede Spรธrgsmรฅl

Commit gรธr en transaktions รฆndringer permanente i databasen. Rollback fortryder alle รฆndringer siden transaktionen startede og vender tilbage til den konsistente tilstand, der eksisterede, fรธr den startede.

Atomicity. Hvis der opstรฅr et nedbrud midtvejs, sikrer atomicitet, at det delvise arbejde kasseres, sรฅ transaktionen behandles, som om den aldrig har kรธrt. Holdbarhed beskytter derefter committed-arbejde efter gendannelse.

AI analyserer lock waits og deadlock-grafer for at finde de transaktioner, der blokerer andre, og anbefaler derefter et isolationsniveau eller en indeksรฆndring, der reducerer transaktionskonflikt uden at svรฆkke korrektheden.

Til en vis grad. Ved at lรฆre de lรฅse-anmodningsmรธnstre, der gik forud for tidligere fastlรฅste situationer, kan en model markere en risikabel transaktionsmix tidligt, hvilket lader planlรฆggeren forsinke eller omarrangere, fรธr en cyklus dannes.

En seriel tidsplan kรธrer รฉn transaktion fuldt ud, fรธr den nรฆste starter, sรฅ ingen interleaving kan รธdelรฆgge data. Den er langsom, hvilket er grunden til, at mรฅlet er en samtidig tidsplan, der kan serialiseres til den.

Opsummer dette indlรฆg med: