13. Strojenie dziennika

Download Report

Transcript 13. Strojenie dziennika

Systemy zarządzania bazami
danych
13. Strojenie dziennika
Atomowość i trwałość
ZATWIERDZONA
COMMIT
Ø
AKTYWNA
BEGIN
(działa, czeka)
ROLLBACK
Oryginał: Shasha & Bonnet
• Każda transakcja kończy
się wycofaniem lub
zatwierdzeniem. Nie może
zmienić zdania
• Nawet po awarii:
WYCOFANA
13. Strojenie dziennika
– Wyniki zatwierdzonych
transakcji muszą być trwałe
– Wyniki wycofanych
transakcji muszą całkowicie
zniknąć
2
Awarie, przestoje
• Sprzętowe
• Środowiskowe
– Pożar w serwerowni (Credit
Lyonnais, 1996)
• Operacyjne
– Problemy przy rutynowej
administracji systemu,
konfiguracji, eksploatacji
• Pielęgnacyjne
– Problemy w czasie naprawy
i konserwacji systemu
Oryginał: Shasha & Bonnet
– Usterka fizyczna w urządzeniu:
procesor, pamięć, dysk, karta
sieciowa
• Programowe
– 99% to „błędy Heisenberga”
• błędy, który wymykają się próbom
wyizolowania warunków ich
występowania,
• nie występują lub zmieniają swoje
zachowanie w trakcie próby
powtórzenia w tych samych
warunkach
• zwykle związane z synchronizacją
lub przeciążeniem
• nie widać ich śladów po restarcie
systemu
13. Strojenie dziennika
3
Przestoje – częstości
• System tolerujący awarie musi
być zabezpieczony na wszystkie
rodzaje awarii
• Problemem jest oprogramowanie
From J.Gray and A.Reuters
Transaction Processing: Concepts
and Techniques
Oryginał: Shasha & Bonnet
Software
Hardware
Maintenance
Operations
Environment
Unknown
– Awarie sprzętu powodują poniżej
10% przestojów
– Błędy Heisenberga zatrzymują
system, ale nie niszczą danych
• SZBD chronią integralność
danych przy pojedynczych
awariach sprzętu i niektórych
awariach oprogramowania
13. Strojenie dziennika
4
Architektura SZBD
Podsystem składu
Kontrola
współbieżności
Odtwarzanie
Menedżer buforów
System operacyjny
Sprzęt
[ Procesor(y), Dysk(i), Pamięć ]
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
5
Obsługa buforów bazy danych
Brak
wymiany
ramek
Zapis
synchroniczny
Zapis
asynchroniczny
Wymiana
ramek
Banał
Pożądane
• Force/No force + Steal/No steal
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
7
Obsługa buforów – rozwiązania
Brak
wymiany
ramek
Wymiana
ramek
Zapis
synchroniczny
Banał
Undo
Zapis
asynchroniczny
Redo
Undo
redo
• Undo – dziennik wycofań
• Redo – dziennik powtórzeń
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
8
Prowadzenie dziennika
• Dziennik zawiera informację do powtórzeń (redo) i
wycofań (undo)
– Sekwencyjne zapisy do dziennika (umieść go a oddzielnym
dysku).
– Minimalizacja informacji zapisywanych do dziennika, żeby
wiele modyfikacji zmieściło się na jednej stronie
• Dziennik: Uporządkowana lista akcji REDO/UNDO
– Wpis do dziennika zawiera:
• (IDTrans, IDStrony, offset, długość, stare dane, nowe dane)
– Dodatkowe informacje sterujące
Obecny stan bazy danych = obecny stan danych na dysku + dziennik
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
9
Zapis wyprzedzający (WAL)
• WAL = Write-Ahead Logging
• Protokół zapisu wyprzedzającego
 Wymusza zrzut wpisu dziennika na dysk przed
zapisem odpowiedniej strony na dysk
 Gwarantuje atomowość
 Wymusza zrzut wpisów dziennika z transakcji, zanim
zakończy się jej zatwierdzenie
 Gwarantuje trwałość
• Algorytm ARIES opracowany przez C.Mohan w
IBM Almaden na początku lat 90-tych XX wieku
–
http://www.almaden.ibm.com/u/mohan/ARIES_Impact.htm
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
10
SKŁADOWISKO NIETRWAŁE
BUFOR
DZIENNIKA
BUFOR BAZY DANYCH
wi wj
Si
ZRZUĆ
wpisy dziennika przez COMMIT
DZIENNIK
DANE
Sj
ZAPISZ
Zmodyfikowane strony przed/po COMMIT
DANE
DANE
ODTWARZANIE
SKŁADOWISKO TRWAŁE
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
11
Dzienniki w SQL Server 2000
Wpis dziennika:
- LSN (zegar logiczny)
- obraz fizyczny przed lub po,
albo operacje logiczne
Wolny bufor
dziennika
Bieżący
bufor dz.
DB2 UDB v7 ma podobnie
Zapełniony
bufor dz.
BUFOR BAZY DANYCH
Procesy
czekające
Pisarz
gorliwy
wolne
Zapełniony
bufor dz.
Kolejka do zrzutu
Synchroniczne I/O
wolne
Sj
Pisarz
leniwy
Asynchroniczne I/O
DZIENNIK
Oryginał: Shasha & Bonnet
Si
DANE
13. Strojenie dziennika
12
Dzienniki Oracle 8i
Obrazy przed
Lista wolnych
Segmenty wycofań
(stały rozmiar)
Bufor dziennika
(domyślnie 32 KB)
BUFOR BAZY DANYCH
Obraz po
(wpisy
REDO)
Si
LGWR
(pisarz
dziennika)
Sj
DBWR
(pisarz
bazy danych)
Plik
#1
DZIENNIK
Plik
#2
Oryginał: Shasha & Bonnet
Segmenty
wycofań
13. Strojenie dziennika
DANE
13
Dziennik na oddzielnym dysku
• Zapisy do dziennika są sekwencyjne
(szczególny profil dostępu)
• Zapisy na dysk są (co najmniej) 100 razy
szybsze, gdy są sekwencyjne, niż gdy są
losowe
Dysk z dziennikiem nie powinien zawierać nic innego
+ sekwencyjne I/O
+ awaria nośnika dziennika niezależna od nośnika bazy danych
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
14
Dziennik oddzielnie – eksperymenty
• 300 000 transakcji. Każda
ma instrukcję INSERT.
– DB2 UDB v7.1
Throughput (tuples/sec)
350
Log on same disk
Log on separate disk
300
250
200
150
100
50
0
controller cache
Oryginał: Shasha & Bonnet
no controller cache
• 5 % większa wydajność
gdy dziennik jest na
oddzielnym dysku
• Pamięć podręczna
sterownika trochę tłumi
negatywny wpływ
– Średniej klasy serwer, z
kontrolerem Adaptec RAID
(80Mb RAM) i dwoma
dyskami 18GB
13. Strojenie dziennika
15
Grupowe zatwierdzenia
Throughput (tuples/sec)
• 300 000 transakcji. Każda
zawiera zdanie INSERT.
– DB2 UDB v7.1
350
300
• Wpisy dziennika różnych
transakcji są zapisywane
razem
250
200
150
100
50
0
1
25
Size of Group Commit
Oryginał: Shasha & Bonnet
– Zwiększa przepustowość
poprzez obniżenie liczby
zapisów
– Kosztem jest za to większy
średni czas oczekiwania
13. Strojenie dziennika
16
Strojenie zapisów bazy danych
• Brudne dane są zapisywane na dysk, gdy
– liczba brudnych stron przekroczy wartość
graniczną (np. parametr w Oracle8)
– odsetek brudnych stron przekroczy wartość
graniczną (np. 3% wolnych buforów w SQL
Server 7)
– Wykonywany jest punkt kontrolny
• w regularnych odstępach czasu
• gdy dziennik jest pełny (Oracle 8).
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
17
Strojenie odstępów punktów
kontrolnych
• Punkt kontrolny (częściowy zrzut
brudnych strona na dysk) odbywa
się w stałych odstępach lub po
zapełnieniu dziennika:
Throughput Ratio
1.2
1
0.8
– Wpływa na wydajność bazy
+ Pozwala obciąć dziennik
+ Zmniejsza czas odtwarzania
0.6
0.4
0.2
0
0 checkpoint
4 checkpoints
• 300 000 transakcji. Każda ma
polecenie INSERT.
– Oracle 8i na Windows 2000
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
18
Zmniejsz rozmiar długich
transakcji modyfikujących
• Wsadowa transakcja z dużą liczbą modyfikacji
(dostęp współbieżny nie jest problemem):
Lepiej ją podzielić na mniejsze:
+ Łatwiejsze odtwarzanie
+ Nie przepełni bufora dziennika
• Przykład: Transakcja, która w określonym porządku przetwarza i
modyfikuje konta, na których były zmiany danego dnia
• Podziela ją na mniejsze wsady po 10000 kont i dodaj licznik,
żeby pamiętać, co już jest zrobione
Oryginał: Shasha & Bonnet
13. Strojenie dziennika
19