KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 22.
Zgodnie z właściwościami ACID, dotyczącym wykonywania transakcji, wymaganie trwałości (ang. durability) oznacza, że
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Trwałość (durability) w ACID oznacza, że skutki zatwierdzonej transakcji muszą przetrwać zakończenie transakcji i ewentualne awarie później. Jeśli transakcja wykona COMMIT, to zapisane dane powinny dać się odtworzyć i pozostać dostępne nawet po restarcie lub błędzie systemu.

Pełne wyjaśnienie:

Właściwości ACID opisują, jakie gwarancje powinien zapewniać system transakcyjny bazy danych. Składnik trwałość (ang. durability) dotyczy tego, co dzieje się po zatwierdzeniu transakcji.

Odpowiedź "dane zatwierdzone przez transakcję powinny być dostępne niezależnie od tego, co się będzie działo po jej zakończeniu" jest poprawna, bo trwałość oznacza, że jeśli transakcja zakończy się powodzeniem i wykona COMMIT, to jej efekty nie mogą "zniknąć" wskutek późniejszych zdarzeń, takich jak awaria zasilania, restart serwera czy błąd programu. W praktyce realizuje się to m.in. przez log transakcyjny i mechanizmy odtwarzania (recovery).

Pozostałe odpowiedzi nie opisują trwałości:

  • "w czasie wykonania transakcji dane mogą być modyfikowane przez inne transakcje" przeczy idei izolacji, a nie wyjaśnia trwałości. Izolacja dotyczy współbieżności i widoczności zmian w trakcie działania transakcji.
  • "w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi" jest niezgodne z typowym działaniem transakcji i z pojęciem spójności. Spójność oznacza przejście bazy z jednego poprawnego stanu do drugiego (lub wycofanie zmian), a nie kasowanie tabel.
  • "transakcja może być w pewnych warunkach podzielona na dwa niezależne etapy" nie definiuje żadnej z podstawowych cech ACID; sugeruje raczej tematykę protokołów rozproszonych lub etapowania, ale nie jest definicją trwałości.

Wskazówka egzaminacyjna: trwałość najłatwiej skojarzyć z pytaniem "czy po COMMIT i awarii systemu dane nadal będą?" Jeśli tak – to właśnie durability.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Trwałość oznacza, że po zatwierdzeniu transakcji (COMMIT) jej skutki nie zostaną utracone. Nawet jeśli wystąpi awaria, restart serwera lub błąd aplikacji po zakończeniu transakcji, baza danych powinna móc odtworzyć zapisane zmiany.
Szukaj sformułowań typu: "po zakończeniu transakcji", "po zatwierdzeniu", "po awarii", "po restarcie". Jeśli pytanie dotyczy tego, czy dane przetrwają zdarzenia po COMMIT, to testuje trwałość, a nie izolację czy spójność.
Trwałość dotyczy tego, co dzieje się po COMMIT (czy dane przetrwają awarie). Izolacja dotyczy działania w trakcie transakcji (czy inne transakcje widzą zmiany i czy dochodzi do anomalii współbieżności).
W aplikacjach webowych (zamówienia, rezerwacje, płatności) użytkownik oczekuje, że po potwierdzeniu operacji dane nie znikną. Durability gwarantuje, że gdy system potwierdzi zapis, to nawet po awarii można przywrócić stan i zachować spójny wynik działania.
Najczęściej przez dziennik transakcyjny (log) i mechanizmy odzyskiwania. Zmiany są zapisywane w sposób umożliwiający odtworzenie po awarii (np. logowanie wyprzedzające/WAL) oraz wykonywane są punkty kontrolne, które skracają czas recovery.
Nie. Trwałość nie oznacza "niezmienności". Oznacza, że efekt zatwierdzonej transakcji nie zostanie utracony przez awarię. Dane mogą być później legalnie zmieniane przez kolejne transakcje, ale nie powinny "cofnąć się" samoczynnie przez błąd systemu.
Może to wystąpić przy złej konfiguracji lub awarii warstwy zapisu (np. błędy dysku, wyłączone gwarancje zapisu, problemy z buforowaniem), gdy system "potwierdza" transakcję bez pewności, że dane trafiły do trwałego nośnika. To ryzyko omawia się przy ustawieniach bezpieczeństwa zapisu.
Oznacza, że po ponownym uruchomieniu bazy danych stan zawiera skutki transakcji, którą uznano za zakończoną sukcesem. Użytkownik i aplikacja mogą odczytać te dane, a system nie powinien "zapomnieć" o nich wskutek przerwy w działaniu.
Najczęściej mylą pojęcia: izolację z trwałością (bo oba "chronią" przed problemami) oraz spójność z mechanizmami kluczy obcych. Pomaga zapamiętać: atomowość=wszystko albo nic, spójność=zgodne reguły, izolacja=współbieżność, trwałość=przetrwa po COMMIT.
Najpierw zidentyfikuj, czy pytanie mówi o: COMMIT/awarii (trwałość), widoczności zmian (izolacja), regułach integralności (spójność) albo rollback/wszystko-nic (atomowość). Potem dopasuj definicję do słów-kluczy.
info

To pytanie poprawnie rozwiązuje 47% zdających egzamin. trudne

Eksperci podkreślają: "Trwałość (durability) w ACID oznacza, że skutki zatwierdzonej transakcji muszą przetrwać zakończenie transakcji i ewentualne awarie później."

Źródła:

  • PostgreSQL Documentation: "Chapter 13. Concurrency Control" (sekcje o transakcjach i ACID), https://www.postgresql.org/docs/current/mvcc.html (dostęp: 2026-03-01)
  • IBM Documentation (Db2): "ACID properties of transactions" (opis właściwości ACID), https://www.ibm.com/docs/en/db2/ (wyszukiwane hasło: ACID properties of transactions) (dostęp: 2026-03-01)
  • Silberschatz, Korth, Sudarshan, "Database System Concepts", rozdział o transakcjach i właściwościach ACID, wydanie zależne od używanego podręcznika (źródło książkowe)

Materiały:

  • Dokumentacja wybranego systemu DB o transakcjach i odzyskiwaniu (np. PostgreSQL, MySQL/InnoDB)
  • Podręcznik akademicki do baz danych (rozdziały o transakcjach i ACID)
  • Materiały kursowe o mechanizmach logowania (WAL) i odtwarzaniu po awarii

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego