KWALIFIKACJA INF3 - STYCZEŃ 2024

PYTANIE NR 19.
Zgodnie z właściwościami ACID dotyczącymi wykonywania transakcji wymaganie izolacji (ang. isolation) oznacza, że
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Izolacja w ACID dotyczy współbieżnego wykonywania transakcji: efekty jednej transakcji nie powinny "przeciekać" do drugiej w trakcie jej działania. W praktyce oznacza to brak widoczności niezatwierdzonych/pośrednich zmian i zachowanie wrażenia wykonywania jak w pewnym porządku szeregowym.

Pełne wyjaśnienie:

Właściwość izolacji (isolation) w modelu ACID opisuje, jak system bazy danych ma zachowywać się, gdy wiele transakcji działa jednocześnie. Ideą jest, aby transakcje nie wpływały na siebie w sposób powodujący obserwację "pośrednich" stanów danych.

Stwierdzenie "jeżeli dwie transakcje wykonują się współbieżnie, to zwykle nie widzą wprowadzanych przez siebie zmian" oddaje sens izolacji: w trakcie trwania transakcji druga transakcja nie powinna widzieć jej niezatwierdzonych (a często także częściowo przetworzonych) efektów. W zależności od poziomu izolacji i implementacji DBMS, system może zapewniać różny stopień tego odseparowania, ale kierunek jest wspólny: ograniczenie widoczności i uporządkowanie skutków.

Pozostałe odpowiedzi opisują inne własności lub błędnie interpretują współbieżność:

  • "pod pewnymi warunkami dane zmieniane przez transakcję mogą zostać wycofane" odnosi się do możliwości rollback, czyli do atomowości (all-or-nothing): transakcja ma zostać wykonana w całości albo wcale.
  • "w przypadku konfliktu z inną transakcją, obie modyfikują te same dane w tym samym czasie" opisuje raczej konflikt współbieżności (sytuację problemową), a nie cechę ACID. Izolacja jest mechanizmem ograniczającym skutki takich konfliktów, a nie definicją konfliktu.
  • "po wykonaniu transakcji system bazy danych będzie spójny" odpowiada właściwości spójności (consistency): po zatwierdzeniu transakcji naruszenia reguł integralności nie powinny pozostać w bazie.

W praktyce, dla technika informatyka istotne jest rozumienie, że izolacja ma bezpośrednie skutki w aplikacjach internetowych: chroni przed anomaliami odczytu i zapisu przy równoległych żądaniach (np. dwie osoby kupujące ostatnią sztukę towaru). Dlatego transakcje i poziomy izolacji należy dobierać świadomie, łącząc poprawność danych z wydajnością.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Izolacja oznacza, że równolegle wykonywane transakcje nie powinny widzieć nawzajem swoich efektów "w trakcie", szczególnie niezatwierdzonych zmian. System ma sprawiać wrażenie, jakby transakcje wykonały się w pewnym porządku, a nie mieszały swoich kroków w sposób psujący wyniki.
W aplikacjach webowych wiele żądań działa jednocześnie (np. zakupy, rezerwacje, płatności). Bez izolacji mogłyby wystąpić błędne odczyty i zapisy, np. dwie transakcje "widzą" ten sam stan i podejmują sprzeczne decyzje. Izolacja ogranicza takie anomalie i pomaga utrzymać poprawność.
Spójność dotyczy tego, że po zatwierdzeniu transakcji baza spełnia reguły (klucze obce, ograniczenia, logika biznesowa). Izolacja dotyczy współbieżności: jak transakcje zachowują się względem siebie, gdy działają naraz, i czy widzą swoje zmiany w trakcie wykonywania.
Brudny odczyt to sytuacja, gdy jedna transakcja odczytuje dane zmienione przez inną transakcję, które nie zostały jeszcze zatwierdzone i mogą zostać wycofane. To klasyczny przykład problemu, przed którym chronią wyższe poziomy izolacji, ograniczając widoczność niezatwierdzonych zmian.
Najczęściej omawia się: brudne odczyty, niepowtarzalne odczyty (ten sam SELECT daje różne wyniki) oraz odczyty fantomowe (pojawiają się/ znikają wiersze spełniające warunek). To zjawiska wynikające z przeplatania operacji wielu transakcji, a izolacja ma je ograniczać.
Nie. Konflikty (np. dwa zapisy tych samych danych) mogą wystąpić, bo są skutkiem równoległego dostępu. Izolacja i mechanizmy współbieżności (blokady, MVCC) określają, jak system taki konflikt rozwiąże: kto czeka, kto dostanie błąd, a jakie dane będą widoczne.
Zwykle im wyższa izolacja (bliżej pełnej "szeregowości"), tym mniej anomalii, ale większy koszt: więcej blokad, więcej wersji danych lub więcej konfliktów do rozstrzygnięcia. Niższa izolacja bywa szybsza, lecz ryzykowniejsza. W praktyce dobiera się poziom pod wymagania biznesowe.
Typowo transakcję rozpoczyna się poleceniem BEGIN (lub jest rozpoczynana automatycznie przez DBMS), a kończy przez COMMIT (zatwierdzenie) albo ROLLBACK (wycofanie). Izolacja dotyczy tego, co inne transakcje mogą zobaczyć pomiędzy BEGIN a COMMIT.
Zdanie o spójności mówi o stanie bazy po transakcji: czy spełnia reguły integralności i logiki. Izolacja nie jest o stanie końcowym, tylko o zachowaniu w trakcie współbieżności. Można mieć spójną bazę po COMMIT, a mimo to mieć problemy z widocznością danych podczas równoległej pracy.
Naucz się mapować każde hasło ACID do krótkiej definicji i przykładu: atomowość (rollback), spójność (reguły), izolacja (współbieżność i widoczność), trwałość (dane po awarii). Dobrze działa też ćwiczenie: dopasuj opis sytuacji (np. brudny odczyt) do właściwej cechy/poziomu izolacji.
info

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

Specjaliści zwracają uwagę: "Izolacja w ACID dotyczy współbieżnego wykonywania transakcji: efekty jednej transakcji nie powinny "przeciekać" do drugiej w trakcie jej działania."

Źródła:

  • PostgreSQL Documentation: "13.2. Transaction Isolation" (opis poziomów izolacji i widoczności zmian), https://www.postgresql.org/docs/current/transaction-iso.html (dostęp: 2026-03-02)
  • Silberschatz, Korth, Sudarshan: "Database System Concepts", rozdział o transakcjach i współbieżności (ACID, izolacja), wydanie zależne od posiadanej wersji podręcznika
  • Gray, Reuter: "Transaction Processing: Concepts and Techniques", rozdziały wprowadzające do własności transakcji i izolacji (ACID), data wydania zależna od edycji

Materiały:

  • Dokumentacja używanego DBMS dotycząca transakcji i poziomów izolacji (np. PostgreSQL, MySQL/InnoDB)
  • Rozdziały z podręczników akademickich o przetwarzaniu transakcji i współbieżności
  • Ćwiczenia laboratoryjne: symulacja dwóch sesji SQL wykonujących równoległe transakcje

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego