You are on page 1of 1

5. Różnice między READ COMMITED SNAPSHOT a SNAPSHOT (np.

występujące problemy,
wycofywanie transakcji, blokady).

DO ZWERYFIKOWANIA:

-Read Commited Snapshot – to samo co Read Commited z tym, ze nie wystepuje


problem zduplikowanych odczytow, ani pominiętych rekordów. Mając Read Commited
jeśli podczas operacji select na tabeli indeksowanej po kluczu głównym (innymi
słowy posortowanej w danych) to jeśli inna transakcja scommituje zmienę jakiegoś
indeksu w tej tabeli to może zajść:

A) odczytanie rekordu drugi raz – tylko pierwszy miał starą wartość indeksu, a
drugi ma nową

B) pominięcie jakiegoś rekordu – bo podczas aktualizacji klucz główny został


zmniejszony

Jest to zgodne z Read Commited – czytane są aktualne scommitowane zmiany – nie jest
to dirty read

W przydaku READ COMMITED SNAPSHOT problem ten nie występuje, gdyż odczyt jest z
wersji tabeli przed rozpocząciem Selecta.

-Snapshot – jest jak REPEATABLE READ, tylko też chroni przed duplikacją i
pominięciem. UWAGA: Snapshot nie chroni przed “rozszerzoną” definicją Phantom, ale
chroni przed podstawową, gdzie:
Podstawowa A3: r1[P]...w2[y in P]...c2...r1[P]...c1

Rozszrzona P3: r1[P]...w2[y in P]...((c1 lub a1) i (c2 lub a2) w dowolnej
kolejności)

Dlaczego?
Podstawowa: Ready nie są blokujące, więc naturalnie w2 sie wykona, drugi read czyta
to samo co pierwszy, wiec opisana sytuacja tutaj nie zajdzie – innymi słowy stan P
przy drugim r1 bedzie taki jakby kolejnosc wygladala tak:

r1[P]... r1[P] ...w2[y in P]...c2...c1

Rozszerzna zachodzi, bo Snapshot nie bedzie widział problemu w wykonaniu podanych


operacji, stąd snapshot nie zabezpiecza nas przed wykonaniem takiej sekwencji.

You might also like