• Nie Znaleziono Wyników

Systemy zarządzania bazami danych

N/A
N/A
Protected

Academic year: 2021

Share "Systemy zarządzania bazami danych"

Copied!
19
0
0

Pełen tekst

(1)

Systemy zarządzania bazami danych

13. Strojenie dziennika

(2)

Atomowość i trwałość

• Każda transakcja kończy się wycofaniem lub

zatwierdzeniem. Nie może zmienić zdania

• Nawet po awarii:

– Wyniki zatwierdzonych transakcji muszą być trwałe – Wyniki wycofanych

transakcji muszą całkowicie zniknąć

AKTYWNA

(działa, czeka)

WYCOFANA ZATWIERDZONA

COMMIT

ROLLBACK

Ø BEGIN

(3)

Awarie, przestoje

• Ś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

• Sprzętowe

– 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

(4)

Przestoje – częstości

• System tolerujący awarie musi być zabezpieczony na wszystkie rodzaje awarii

• Problemem jest oprogramowanie

– 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

Software Hardware Maintenance Operations Environment Unknown

From J.Gray and A.Reuters Transaction Processing: Concepts and Techniques

(5)

Architektura SZBD

Sprzęt

[ Procesor(y), Dysk(i), Pamięć ] System operacyjny

Kontrola

współbieżności Odtwarzanie

Podsystem składu

Menedżer buforów

(6)

Obsługa buforów bazy danych

Zapis

synchroniczny

Zapis

asynchroniczny

Brak

wymiany ramek

Wymian a

ramek

Banał

Pożą- dane

• Force/No force + Steal/No steal

(7)

Obsługa buforów – rozwiązania

Zapis

synchroniczny

Zapis

asynchroniczny

Brak

wymiany ramek

Wymian a

ramek

Banał

Undo redo Undo

Redo

• Undo – dziennik wycofań

• Redo – dziennik powtórzeń

(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

(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

(10)

DZIEN-

NIK DANE DANE DANE

SKŁADOWISKO TRWAŁE SKŁADOWISKO NIETRWAŁE

ZRZUĆ

wpisy dziennika przez COMMIT

ZAPISZ

Zmodyfikowane strony przed/po COMMIT

ODTWARZANIE

Si Sj

BUFOR BAZY DANYCH

BUFOR

DZIENNIKA wi wj

(11)

Dzienniki w SQL Server 2000

Wolny bufor dziennika

Zapełniony bufor dz.

Bieżący bufor dz.

Zapełniony bufor dz.

Pisarz gorliwy

Kolejka do zrzutu

Procesy czekające

DZIEN-

NIK DANE

wolne

Si

wolne

Sj

Wpis dziennika:

- LSN (zegar logiczny)

- obraz fizyczny przed lub po, albo operacje logiczne

Pisarz leniwy

Synchroniczne I/O Asynchroniczne I/O

DB2 UDB v7 ma podobnie

BUFOR BAZY DANYCH

(12)

Dzienniki Oracle 8i

Segmenty wycofań (stały rozmiar)

Obraz po (wpisy REDO)

Bufor dziennika (domyślnie 32 KB)

Si Sj

Lista wolnych

BUFOR BAZY DANYCH

DZIENNIK DANE

Segmenty wycofań

Plik

#1 Plik

#2

LGWR (pisarz dziennika)

DBWR (pisarz bazy danych)

Obrazy przed

(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

(14)

Dziennik oddzielnie – eksperymenty

• 300 000 transakcji. Każda ma instrukcję INSERT.

– DB2 UDB v7.1

• 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

0 50 100 150 200 250 300 350

controller cache no controller cache Throughput (tuples/sec) Log on same disk

Log on separate disk

(15)

Grupowe zatwierdzenia

• 300 000 transakcji. Każda zawiera zdanie INSERT.

– DB2 UDB v7.1

• Wpisy dziennika różnych transakcji są zapisywane razem

– Zwiększa przepustowość poprzez obniżenie liczby zapisów

– Kosztem jest za to większy średni czas oczekiwania

0 50 100 150 200 250 300 350

1 25

Size of Group Commit

Throughput (tuples/sec)

(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).

(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:

– Wpływa na wydajność bazy + Pozwala obciąć dziennik + Zmniejsza czas odtwarzania

• 300 000 transakcji. Każda ma polecenie INSERT.

– Oracle 8i na Windows 2000

0 0.2 0.4 0.6 0.8 1 1.2

0 checkpoint 4 checkpoints

Throughput Ratio

(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

Cytaty

Powiązane dokumenty

(2) Zanim zmieniony x znajdzie się na dysku, wszystkie wpisy dotyczące transakcji, która zmodyfikowała x muszą trafić na dysk. (3) Przy commit , zrzuć dziennik na dysk ( flush

(4) Ti może założyć zamek X,SIX,IX na węzeł Q tylko wtedy, gdy rodzic(Q) ma zamek IX lub SIX założony przez transakcję Ti. (5) Ti zakłada

• Otwarcie połączenia z bazą danych jest drogie, ale wielokrotne użycie tanie. – Używaj

– Brak promocji zamków w Oracle; Parametry DB2 ustawione, żeby nie było promocji zamków; brak takiej kontroli w SQL Server. – Dual Xeon (550MHz,512Kb), 1Gb

– Zapis do pamięci podręcznej: transfer kończy się, gdy dane znajdą się w pamięci podręcznej sterownika. • Baterie gwarantują zapis przy

– Jeśli często odczytuje się adres dostawcy na podstawie numeru zamówionej części, to schemat 1 jest dobry.. – Jeśli jest wiele dodawanych wiele zamówień, schemat 1

• Indeks niepogrupowany jest dobry, gdy używające go zapytania zwracają znacznie mniej rekordów niż jest stron w tabeli. •

• DISTINCT jest zbędny, ponieważ ssnum jest kluczem w employee, więc też i kluczem w podzbiorze relacji employee...