(Microsoft PowerPoint - 16-odtwarzanie [tryb zgodno\234ci])
Transkrypt
(Microsoft PowerPoint - 16-odtwarzanie [tryb zgodno\234ci])
Problem odtwarzania bazy danych Odtwarzanie bazy danych (recovery) • System bazy danych musi być w stanie odtworzyć swój poprawny stan w sposób automatyczny, a więc bez interwencji człowieka. • Operacja odtwarzania powinna być automatycznie inicjowana w chwili restartu systemu. • Organizacja systemu bazy danych i organizacja procesów jej przetwarzania musi być tak pomyślana, aby odtwarzanie takie było możliwe. Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski (c) T. Pankowski, Odtwarzanie bazy danych (c) T. Pankowski, Odtwarzanie bazy danych 1 Problem odtwarzania bazy danych 2 Architektura systemu bazy danych (c.d.) T1 T2 ... Tn Read, Write, Abort, Commit • Odtwarzanie realizuje postulat trwałości ze zbioru postulatów ACID. • Odtwarzanie dotyczy awarii bazy danych wywołanych nieoczekiwanym przerwaniem przetwarzania transakcji (np. w wyniku awarii zasilania), a nie awarii krytycznych wywołanych np. uszkodzeniem pamięci dyskowej. • Omawianego w dalszym ciągu odtwarzania (recovery) nie należy mylić z odtwarzaniem z archiwum (restoring). Menedżer transakcji (MT) Read, Write, Abort, Commit Restart Read, Write, Abort, Commit Menedżer odtwarzania (MO) Baza danych Dziennik transakcji (c) T. Pankowski, Odtwarzanie bazy danych 3 Planista Read, Write Fetch, Flush Read, Write Menedżer pamięci chwilowej (MPCh) Read, Write Pamięć chwilowa (PCh) Menedżer danych (MD) 4 Postępowanie z transakcjami w przypadku awarii Odtwarzanie bazy danych Zarządzanie danymi w procesie odtwarzania – struktury danych Działanie 1 • Baza danych – strony stałej wielkości • Pamięć chwilowa (PCh) (cache) – bufory o wielkości stron • Dziennik transakcji (log) • Listy transakcji: aktywnych, zatwierdzonych, odrzuconych Nic 2 3 4 5 Checkpoint Roll forward (Redo) Roll back (Undo) Roll forward (Redo) Roll back (Undo) Awaria systemu 5 6 Struktury danych - PCh Struktury danych – baza danych • Baza danych – znajduje się w pamięci stałej. Przyjmujemy, że jej zawartość podzielona jest (fizycznie) na jednostki zwane stronami (blokami). Pojemność strony jest równa pojemności bufora. • Niekiedy zakłada się, że zarówno w bazie danych, jak i w systemie buforów znajdują się pule stron/buforów różnej wielkości (np. pula o wielkości 8kB i pula o wielkości 32 kB). (c) T. Pankowski, Odtwarzanie bazy danych (c) T. Pankowski, Odtwarzanie bazy danych 7 • Pamięć chwilowa (podręczna) – jest to system buforów przechowywanych w pamięci operacyjnej. • W jednym buforze może być umieszczona jedna strona (blok) bazy danych. • Liczba buforów jest niewielka w porównaniu z całą bazą danych stąd często przy próbie sprowadzenia kolejnego fragmentu bazy danych do PCh należy podjąć decyzję, który z buforów należy wykorzystać (proces ten nazywany jest wymianą stron). Wówczas zawartość tego bufora należy zapamiętać (ang. flash, write) w bazie danych. (c) T. Pankowski, Odtwarzanie bazy danych 8 Struktury danych – PCh (c.d.) Struktury danych – PCh (c.d.) • Istotne jest kto zarządza wymianą stron. • Możliwe są dwa rozwiązania: • menedżer odtwarzania – wówczas przy wymianie stron może być brana pod uwagę wiedza o stanie procesu przetwarzania/odtwarzania; • menedżer pamięci chwilowej – proces wymiany stron sterowany jest jakimś przyjętym algorytmem biorącym pod uwagę na przykład czas ostatniego dostępu do bufora (np. przy stosowaniu algorytmu LRU, Last Recently Used – używany najdawniej – zwalniany jest ten bufor, do którego ostatnie odwołanie miało miejsce najdawniej). (c) T. Pankowski, Odtwarzanie bazy danych • Wszelkie operacje na bazie danych (odczytywanie, zapisywanie) odbywa się za pośrednictwem PCh. • Oznacza to, że strona (blok) danych bazy danych, do którego się odwołujemy, musi przed wykonaniem operacji znajdować się w PCh – albo już tam jest, albo musi być tam sprowadzony. • Zauważmy, że w przypadku awarii (na przykład zaniku zasilania) zawartość PCh jest tracona. (c) T. Pankowski, Odtwarzanie bazy danych 9 Struktury danych – dziennik transakcji (log) 10 Struktury danych – listy transakcji • Dziennik transakcji, DzT, (ang. log) – znajduje się w pamięci stałej. • Zakładamy, że w dzienniku transakcji zapamiętane są wszystkie ostatnio zatwierdzona wartości wszystkich danych bazy danych (w praktyce stosuje się różne zabiegi optymalizacyjne). • Dzięki DzT możliwe jest określenie ostatnio zatwierdzonych danych (należy w tym celu przeglądać dziennik z dołu do góry). • Zawartość dziennika transakcji może być traktowana jako 3-kolumnowa tabela o następującej strukturze: • • • Listy transakcji: LTA - lista transakcji aktywnych, LTZ - lista transakcji zatwierdzonych, LTO - lista transakcji odrzuconych. gdzie (t, x, v) ∈ DzT oznacza, że transakcja t nadała danej x wartość v. (c) T. Pankowski, Odtwarzanie bazy danych 11 (c) T. Pankowski, Odtwarzanie bazy danych 12 Algorytm UNDO/REDO (c.d.) Algorytm UNDO/REDO Algorytm UNDO/REDO opisuje proces przetwarzania transakcji z uwzględnieniem możliwości odtworzenia bazy danych w przypadku awarii. Odtwarzanie bazy danych następuje w chwili restartu systemu po jego awarii. Algorytm UNDO/REDO jest stosowany wówczas, gdy w procesie odtwarzania konieczne jest wykonanie operacji UNDO dotyczącej przerwanych transakcji oraz operacji REDO dotyczącej zatwierdzonych transakcji. (c) T. Pankowski, Odtwarzanie bazy danych UNDO oznacza przywrócenie poprzednich (zatwierdzonych) wartości tym danym, które były zmieniane przez transakcje przerwane przed ich zatwierdzeniem. Operacja jest konieczna wtedy, gdy strategia wymiany stron w PCh prowadzona jest przez MPCh niezależnie od MO. Może więc się zdarzyć, że blok danych z PCh został zapamiętany w bazie danych w momencie, gdy transakcja zapisująca w nim dane nie została jeszcze zatwierdzona. W przypadku awarii należy więc te zmiany wycofać. (c) T. Pankowski, Odtwarzanie bazy danych 13 Algorytm UNDO/REDO (c.d.) Architektura systemu bazy danych T1 REDO oznacza ponowne wykonanie operacji aktualizacji danych wykonanych przez transakcje zatwierdzone. Operacja ta jest konieczna wtedy, gdy MPCh prowadzi własną strategię wymiany stron. Może więc się zdarzyć, że mimo iż transakcja została zatwierdzona, to wykonane przez nią zmiany nie zostały jeszcze zrzucone z PCh do bazy danych. W przypadku awarii nastąpi utrata efektów pracy transakcji. ... Tn Menedżer transakcji (MT) Read, Write, Abort, Commit Planista Restart Read, Write, Abort, Commit Menedżer odtwarzania (MO) Dziennik transakcji 15 T2 Read, Write, Abort, Commit Baza danych (c) T. Pankowski, Odtwarzanie bazy danych 14 Read, Write Fetch, Flush Read, Write Menedżer pamięci chwilowej (MPCh) Read, Write Pamięć chwilowa (PCh) Menedżer danych (MD) 16 Algorytm UNDO/REDO – Write( Write(T, T, x, v) v) 1. 2. 3. 4. 5. Algorytm UNDO/REDO – Commit Commit((T) Dołącz transakcję T do listy transakcji aktywnych (LTA), jeśli jeszcze na niej nie występuje. Jeśli x nie znajduje się w PCh, to sprowadź do PCh stronę zawierającą x. Dołącz (T, x, v) do dziennika transakcji (DzT). Przypisz danej x w PCh wartość v. Zawiadom planistę o zakończeniu operacji. (c) T. Pankowski, Odtwarzanie bazy danych 1. 2. 3. (c) T. Pankowski, Odtwarzanie bazy danych 17 2. 3. 4. Dla każdej danej x zapisywanej przez T: • jeśli x nie znajduje się w PCh, to sprowadź tam stronę zawierającą x, • przypisz w PCh danej x uprzednią wartość x względem T (before image). Dołącz T do listy transakcji odrzuconych. Powiadom planistę o odrzuceniu transakcji T. Usuń T z listy transakcji aktywnych. (c) T. Pankowski, Odtwarzanie bazy danych 18 Algorytm UNDO/REDO – Restart Algorytm UNDO/REDO – Abort Abort((T) 1. Dałącz T do listy transakcji zatwierdzonych (LTZ). Powiadom planistę o zatwierdzeniu transakcji T. Usuń T z listy transakcji aktywnych (LTA). 1. 2. 3. 19 Wyczyść wszystkie bufory w PCh, REDONE := ∅ i UNDONE := ∅. Rozpocznij od ostatniego zapisu w DzT i przesuwaj się do jego początku. Dopóki nie przeanalizowano wszystkich zapisów w DzT, wykonuj: Dla każdego zapisu (T, x, v), takiego że x ∉ REDONE ∪ UNDONE: • jeśli x nie znajduje się w PCh, to sprowadź tam stronę zawierającą x; • jeśli T jest na liście transakcji zatwierdzonych, przypisz danej x w PCh wartość v i przyjmij REDONE := REDONE ∪ {x}; • jeśli T nie jest na liście transakcji zatwierdzonych, przypisz w PCh danej x uprzednią wartość x względem T i przyjmij UNDONE := UNDONE ∪ {x}. Dla każdej transakcji T z listy transakcji zatwierdzonych, usuń T z listy transakcji aktywnych. Powiadom planistę o zakończeniu operacji Restart. 20