Hvad er ACID?
Stryg for at vise menuen
Vi indleder vores udforskning af avancerede SQL-emner med begrebet ACID-principper.
ACID er et akronym for Atomicity, Consistency, Isolation og Durability. Disse fire egenskaber er grundlæggende principper inden for databaseadministration og er designet til at sikre pålideligheden af databasetransaktioner.
Du har måske bemærket, at vi bruger ordet transaktion i ACID-definitionen. Du tænker måske på en banktransaktion, når du hører dette ord, men i databasesammenhæng er en transaktion defineret lidt anderledes.
En transaktion refererer til en sekvens af en eller flere databaseoperationer, der behandles som en enkelt logisk arbejdsenhed.
Forestil dig, at du bruger en online shopping-hjemmeside.
Du lægger varer i din kurv, går til kassen og gennemfører en betaling. Hele denne proces kan betragtes som en databasetransaktion. Sådan fungerer det:
- Start transaktion: du påbegynder betalingsprocessen;
- Operationer:
- Systemet verificerer, at varerne i din kurv stadig er på lager;
- Dine betalingsoplysninger behandles;
- Lagerbeholdningen opdateres for at afspejle de varer, du har købt;
- En ordrepost oprettes i databasen.
- Commit transaktion: når alle disse trin er gennemført med succes, gennemføres transaktionen, hvilket betyder, at alle ændringer gemmes i databasen;
- Rollback (hvis nødvendigt): hvis et trin fejler (f.eks. hvis betalingen ikke går igennem), rulles transaktionen tilbage, hvilket betyder, at ingen af ændringerne gemmes. Dette sikrer, at databasen forbliver i en konsistent tilstand, som om transaktionen aldrig fandt sted.
Dette eksempel viser, hvordan en transaktion samler flere operationer i én pålidelig proces.
Hvorfor har vi brug for ACID?
ACID-egenskaber er vigtige i databaser af tre hovedårsager:
- For det første garanterer de transaktionspålidelighed ved at behandle transaktioner som enkeltstående, udelelige enheder, forhindrer delvise opdateringer og opretholder konsistens;
- For det andet muliggør de samtidighedskontrol ved at sikre, at transaktioner udføres uafhængigt, hvilket forhindrer indblanding og bevarer datakonsistens i miljøer med flere brugere;
- Endelig sikrer de datavarighed ved permanent at registrere bekræftede transaktioner, så de overlever systemfejl og sikrer datagendannelse.
Lad os overveje en situation med en bankkonto:
- Transaktion 1 (T1): Du overfører $100 fra din opsparingskonto til din lønkonto.
- Samtidig, Transaktion 2 (T2): Du tjekker din opsparingskontosaldo online.
- Men så støder T1 på en fejl—måske på grund af et netværksproblem—og gennemfører ikke overførslen.
- I mellemtiden gennemføres T2 og viser din opsparingskontosaldo, inklusive de $100, der faktisk endnu ikke er blevet overført.
Dette overtræder Isolation-egenskaben i ACID. Selvom overførslen ikke blev gennemført (på grund af T1's fejl), har du allerede set effekten af den i din kontosaldo. Denne inkonsistens kan forvirre brugere og føre til forkerte økonomiske beslutninger.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat