Vad är ACID?
Svep för att visa menyn
Vi inleder vår utforskning av avancerade SQL-ämnen med begreppet ACID-principer.
ACID är en akronym som står för Atomicity, Consistency, Isolation och Durability. Dessa fyra egenskaper är grundläggande principer inom databashantering och är utformade för att säkerställa tillförlitligheten hos databastransaktioner.
Du kanske har lagt märke till att vi använder ordet transaktion i ACID-definitionen. Du kanske tänker på en banktransaktion när du hör detta ord, men i databassammanhang definieras en transaktion på ett lite annorlunda sätt.
En transaktion avser en sekvens av en eller flera databasoperationer som behandlas som en enda logisk arbetsenhet.
Föreställ dig att du använder en webbplats för näthandel.
Du lägger till varor i din kundvagn, går till kassan och genomför en betalning. Hela denna process kan ses som en databastransaktion. Så här fungerar det:
- Starta transaktion: du påbörjar kassaprocessen;
- Operationer:
- Systemet kontrollerar att varorna i din kundvagn fortfarande finns i lager;
- Din betalningsinformation behandlas;
- Lagret uppdateras för att återspegla de varor du har köpt;
- En orderpost skapas i databasen.
- Bekräfta transaktion: när alla dessa steg har slutförts framgångsrikt bekräftas transaktionen, vilket innebär att alla ändringar sparas i databasen;
- Återställning (vid behov): om något steg misslyckas (t.ex. om betalningen inte går igenom) återställs transaktionen, vilket innebär att inga ändringar sparas. Detta säkerställer att databasen förblir i ett konsekvent tillstånd, som om transaktionen aldrig hade ägt rum.
Detta exempel visar hur en transaktion grupperar flera operationer till en enda, tillförlitlig process.
Varför behöver vi ACID?
ACID-egenskaper är viktiga i databaser av tre huvudsakliga skäl:
- För det första garanterar de transaktionssäkerhet genom att behandla transaktioner som enskilda, odelbara enheter, förhindrar partiella uppdateringar och upprätthåller konsistens;
- För det andra möjliggör de samtidighetskontroll genom att säkerställa att transaktioner utförs oberoende, vilket förhindrar störningar och bevarar datakonsistens i miljöer med flera användare;
- Slutligen säkerställer de datalagringens hållbarhet genom att permanent registrera bekräftade transaktioner, överlever systemfel och möjliggör återställning av data.
Låt oss överväga en situation som involverar ett bankkonto:
- Transaktion 1 (T1): Du överför $100 från ditt sparkonto till ditt lönekonto.
- Samtidigt, Transaktion 2 (T2): Du kontrollerar ditt sparkontosaldo online.
- Men sedan stöter T1 på ett fel—kanske på grund av ett nätverksproblem—och misslyckas med att slutföra överföringen.
- Under tiden slutförs T2 och visar ditt sparkontosaldo, inklusive den $100-överföring som faktiskt inte har skett än.
Detta bryter mot Isolations-egenskapen i ACID. Även om överföringen inte slutfördes (på grund av T1:s fel), har du redan sett effekten av den i ditt kontosaldo. Denna inkonsekvens kan förvirra användare och leda till felaktiga ekonomiska beslut.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal