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.

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.

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. |
Lad os studere en tilstandsovergangsdiagram der fremhรฆver, hvordan en transaktion bevรฆger sig mellem disse forskellige stater.
- Nรฅr en transaktion starter udfรธrelsen, bliver den aktiv. Den kan udfรธre en LรSNINGS- eller SKRIVNINGSoperation.
- Nรฅr LรSNINGS- og SKRIVNINGSoperationerne er fuldfรธrt, nรฅr transaktionen den delvist committede tilstand.
- 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.
- Hvis kontrollen mislykkes, gรฅr transaktionen til tilstanden mislykket.
- 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.
- 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.

