Hva er ACID?
Sveip for å vise menyen
Vi starter vår utforskning av avanserte SQL-emner med konseptet ACID-prinsipper.
ACID er et akronym for Atomicity, Consistency, Isolation og Durability. Disse fire egenskapene er grunnleggende prinsipper innen databaseadministrasjon og er utformet for å sikre påliteligheten til databasetransaksjoner.
Du har kanskje lagt merke til at vi bruker ordet transaksjon i ACID-definisjonen. Du tenker kanskje på en banktransaksjon når du hører dette ordet, men i databasesammenheng er en transaksjon definert litt annerledes.
En transaksjon refererer til en sekvens av én eller flere databaseoperasjoner som behandles som en enkelt logisk arbeidsenhet.
Tenk deg at du bruker en nettbutikk.
Du legger varer i handlekurven, går til kassen og gjennomfører en betaling. Hele denne prosessen kan betraktes som en databasetransaksjon. Slik fungerer det:
- Start transaksjon: du starter utsjekkingsprosessen;
- Operasjoner:
- Systemet verifiserer at varene i handlekurven fortsatt er på lager;
- Betalingsinformasjonen din behandles;
- Lagerbeholdningen oppdateres for å gjenspeile varene du har kjøpt;
- En ordre registreres i databasen.
- Fullfør transaksjon: når alle disse trinnene er fullført, blir transaksjonen fullført, noe som betyr at alle endringene lagres i databasen;
- Tilbakestill (om nødvendig): hvis et trinn mislykkes (for eksempel hvis betalingen ikke går gjennom), tilbakestilles transaksjonen, noe som betyr at ingen av endringene lagres. Dette sikrer at databasen forblir i en konsistent tilstand, som om transaksjonen aldri fant sted.
Dette eksempelet viser hvordan en transaksjon samler flere operasjoner i én pålitelig prosess.
Hvorfor trenger vi ACID?
ACID-egenskaper er viktige i databaser av tre hovedgrunner:
- For det første garanterer de transaksjonspålitelighet ved å behandle transaksjoner som enkeltstående, udelelige enheter, forhindrer delvise oppdateringer og opprettholder konsistens;
- For det andre muliggjør de kontroll av samtidighet ved å sikre at transaksjoner utføres uavhengig, forhindrer forstyrrelser og bevarer datakonsistens i miljøer med flere brukere;
- Til slutt sikrer de datavarighet ved å permanent lagre bekreftede transaksjoner, overleve systemfeil og sikre datagjenoppretting.
La oss se på en situasjon som involverer en bankkonto:
- Transaksjon 1 (T1): Du overfører $100 fra sparekontoen din til brukskontoen din.
- Samtidig, Transaksjon 2 (T2): Du sjekker saldoen på sparekontoen din på nett.
- Men så oppstår det en feil i T1—kanskje på grunn av et nettverksproblem—og overføringen fullføres ikke.
- I mellomtiden fullføres T2 og viser saldoen på sparekontoen din, inkludert de $100 som faktisk ikke har blitt overført ennå.
Dette bryter med Isolasjon-egenskapen i ACID. Selv om overføringen ikke ble fullført (på grunn av feil i T1), har du allerede sett effekten av den i kontosaldoen din. Denne inkonsistensen kan forvirre brukere og føre til feilaktige økonomiske beslutninger.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår