ACID – zbiór właściwości gwarantujących poprawne przetwarzanietransakcji wbazach danych. ACID jestskrótowcem od angielskich słówatomicity,consistency,isolation,durability, czyliniepodzielność[a],spójność,izolacja,trwałość[1].
- Niepodzielność transakcji oznacza, że każda transakcja albo zostanie wykonana w całości, albo w ogóle – na przykład jeśli w ramach jednej transakcji odbywać się ma przelew bankowy (zmniejszenie wartości jednego konta i powiększenie innego o tę samą kwotę), to nie może dojść do sytuacji, że z jednego konta ubędzie pieniędzy, a kwota na koncie docelowym będzie bez zmian.
- Spójność transakcji oznacza, że po wykonaniu transakcji system będzie spójny, czyli nie zostaną naruszone zasadyintegralności.
- Izolacja transakcji oznacza, że jeśli dwie transakcje wykonują się współbieżnie, to zwykle (w zależności od poziomu izolacji) nie widzą wprowadzanych przez siebie zmian. Poziom izolacji w bazach danych jest zazwyczaj konfigurowalny i określa, jakich anomalii możemy się spodziewać przy wykonywaniu transakcji. Przykładowe typy izolacji to (model ANSI)[2]:
- read uncommitted – jedna transakcja może odczytywać wiersze, na których działają inne transakcje (najniższy poziom izolacji)
- read committed – transakcja może odczytywać tylko wiersze zapisane
- repeatable read – transakcja nie może czytać ani zapisywać na wierszach odczytywanych lub zapisywanych w innej transakcji
- serializable (szeregowalne) – wyniki współbieżnie realizowanych zapytań muszą być identyczne z wynikami tych samych zapytań realizowanych szeregowo (pełna izolacja).
Nie zawsze wszystkie poziomy są implementowane przez producentów; czasami producent wprowadza własne rozwiązania. Na przykład silnik Oracle wspiera tylko izolacjeread commited iserializable, a w IDS istnieje poziom izolacjicursor stability, którego nie ma w modelu ANSI.
- Trwałość danych oznacza, że system potrafi uruchomić się i udostępnić spójne, nienaruszone i aktualne dane zapisane w ramach zatwierdzonych transakcji, na przykład po nagłej awarii zasilania.
- ↑Niekiedy spotyka się kalkowe tłumaczenie z języka angielskiego: „atomowość” (rzadziej: „atomiczność”).