• Nie Znaleziono Wyników

Systemy zarządzania bazami danych

N/A
N/A
Protected

Academic year: 2021

Share "Systemy zarządzania bazami danych"

Copied!
20
0
0

Pełen tekst

(1)

Systemy zarządzania bazami danych

12. Strojenie systemu operacyjnego

(2)

Do nastrojenia

• System operacyjny

– Wątki

• Przełączanie kontekstu

• Priorytety

– Pamięć wirtualna – System plików

• Sprzęt

– Podsystem składowania

• Konfiguracja macierzy dysków

• Korzystanie z pamięci podręcznej sterownika

– Poprawa parametrów komponentów

– Architektury

wieloprocesorowe

(3)

Wątki

• Tryb dzielony czy dedykowany?

– Mniej aktywnych wątków niż sesji użytkownika oznacza zwiększony czas oczekiwania u niektórych użytkowników w zamian za mniej przełączeń kontekstu (czyli

zwiększoną całościową przepustowość).

• Przełączanie kontekstu między wątkami jest kosztowne

– Użyj dużego kwantu by ich uniknąć, np. 1 sekunda.

– Planowanie bez wywłaszczania (np. włókna w ramach wątków w MS SQL Server – zalecane przy wielu

procesorach zajętych w 100%)

– Poziom współbieżności: czy zwiększanie poprawia czy psuje wydajność?

(4)

Odwrócenie priorytetów

zamyka X

żąda X

Priorytet #1

T3

T1

T2

Priorytet #2

Priorytet #3

działa czeka Stany transakcji

• Trzy transakcje T1, T2, T3 w porządku priorytetów (T1 ma najwyższy)

1. T3 uzyskuje zamek na x i jest wywłaszczana

2. T1 czeka na zamek na x, więc jest usypiana

3. T2 nie potrzebuje x, więc sobie działa długo i szczęśliwie

– Efekt: T1 czeka na T2!

(5)

Wątki

• Uważaj na priorytety

– SZBD nie powinno mieć niższego priorytetu niż inne aplikacje

– Unikaj odwrócenia priorytetów

• Daj wszystkim transakcjom ten sam priorytet (zalecane przez Oracle). Niestety może to

prowadzić do niepożądanej równości.

• Priorytety dynamiczne: właściciel zamka dziedziczy priorytet od transakcji oczekującej o najwyższym priorytecie (SQL Server)

(6)

Poziom współbieżności

• DB2 UDB v7.1 na procesorze dwurdzeniowym i Windows 2000.

• Dane w pamięci RAM

– Zwiększanie współbieżności zmniejsza przepustowość

• Przełączenia

• Synchronizacja

• Dane na dysku

– Zwiększanie współbieżności zwiększa przepustowość dostępu losowego

• Listowe ładowanie na zapas w DB2

0 0,1 0,2 0,3 0,4 0,5 0,6

0 2 4 6 8 10

Degree of Parallelism

Throughput (Trans/sec) Sequential on- disk

Random on-disk

Sequential in- memory Random in- memory

(7)

Wielkość bufora bazy danych

• Za mały bufor to za mało stosunek trafień

stosunek trafień =

dostępy logiczne – dostępy fizyczne dostępy logiczne

• Za duży bufor, to ryzyko stronicowania

• Zalecenie: monitoruj stosunek trafień i zwiększaj rozmiar

buforu, dopóki wykres stosunku się nie spłaszczy.

• Jeśli SO nadal stronicuje, dokup pamięci

Dzien-

nik Dane Dane

PAMIĘĆ RAM

Dysk stroni- cowania

PROCESY BAZY DANYCH

BUFOR BAZY DANYCH

(8)

Wielkość bufora – eksperymenty

• SQL Server 7 na Windows 2000

• Tabela ma 630 MB

• Zapytanie z odczytem pełnym

– Tabela jest albo w całości w RAM, albo w całości czytana z dysku – wynik strategii LRU (sekwencyjne zalewanie bufora)

• Zapytanie wielopunktowe

– Przepustowość rośnie liniowo wraz z wielkością bufora do chwili, gdy cała tabela jest w RAM

Multipoint Query

0 40 80 120 160

0 200 400 600 800 1000

Buffer Size (Mb) Throughput (Queries/sec)

Scan Query

0 0.02 0.04 0.06 0.08 0.1

0 200 400 600 800 1000

Buffer Size (Mb) Throughput (Queries/sec)

(9)

Układanie na dysku

• Przydzielaj długie ciągłe fragmenty dysku na

pliki, które się często odczytuje w pełni. Dobierz parametr odczytu na zapas

– Plik dziennika, plik z historią

– Plik często odczytywany w pełni

• Uwaga na pliki o różnej pośredniości (np. Unix)

– Dalsze części pliku są bardziej pośrednie i mają dłuższy czas dostępu

– Lepiej wtedy zaimplementować własne pliki na urządzeniu surowym

(10)

Wykorzystanie stron

• Ustal stopień użycia stron dyskowych w zależności od stosunku zapytań i

modyfikacji

– Wysokie użycie pomaga w pełnym odczycie, ponieważ trzeba wtedy odczytać mniej stron (pod warunkiem, że nie ma łańcuchowania i stron nadmiarowych)

– Małe użycie zmniejsza prawdopodobieństwo

łańcuchowania, gdy modyfikacje zmieniają

rozmiar rekordu

(11)

Ładowanie na zapas

• DB2 UDB v7.1 na Windows 2000

• Pełny odczyt tabeli

• Przepustowość rośnie do pewnego punktu

razem ze zwiększaniem rozmiaru danych

ładowanych na zapas

0 0.05 0.1 0.15 0.2

32Kb 64Kb 128Kb 256Kb

Prefetching

Throughput (Trans/sec)

scan

(12)

Stopień wykorzystania stron

• DB2 UDB v7.1 na Windows 2000

• Pełny odczyt tabeli

• Przepustowość

wyraźnie rośnie wraz ze stopniem

wykorzystania

0 0.05 0.1 0.15 0.2

70 80 90 100

Usage Factor (%)

Throughput (Trans/sec)

scan

(13)

Poziomy RAID

• Dziennik

– RAID 1 jest właściwy (mirroring)

• Zabezpieczenie przed błędami przy wysokiej przepustowości zapisu. Zapisy są synchroniczne i sekwencyjne. Nie byłby zysku przy stripingu

• Plik tymczasowe

– RAID 0 jest właściwy (striping)

• Brak odporności na błędy (po co?). Wysoka przepustowość

• Pliki danych, pliki indeksowe

– RAID 5 (parity) dobry dla aplikacji intensywnie czytających. Uwaga: 1 zapis = 4 operacje I/O.

– RAID 10 (striping&mirroring) dobry dla aplikacji intensywnie piszących

(14)

Poziomy RAID – eksperymenty

• Intensywnie czytające

– Powielenie dysków

(RAID0, RAID 10, RAID5) znacząco zwiększa

przepustowość

• Intensywnie piszące

– Negatywny wpływ

programowego RAID 5 jest oczywisty

– Sterownik potrafi jednak zniwelować negatywy RAID 5 dzięki swojej pamięci podręcznej

Write-Intensive

0 40 80 120 160

Soft- RAID5

RAID5 RAID0 RAID10 RAID1 Single Disk

Throughput (tuples/sec)

Read-Intensive

0 20000 40000 60000 80000

Soft- RAID5

RAID5 RAID0 RAID10 RAID1 Single Disk

Throughput (tuples/sec)

(15)

Pamięć podręczna sterownika

• Odczyt na zapas

– Prefetching na poziomie sterownika dysku.

– Brak informacji o profilu dostępu – Niezalecane

• Zapis do końca czy do pamięci podręcznej?

– Zapis do pamięci podręcznej: transfer kończy się, gdy dane znajdą się w pamięci podręcznej sterownika

• Baterie gwarantują zapis przy zaniku zasilania

• Szybki zrzut pamięci podręcznej jest priorytetem

– Zapis do końca: transfer kończy się, gdy dane znajdą się na dysku

(16)

Pamięć podręczna sterownika

• SQL Server 7 (Windows2000)

• Sterownik Adaptec ServerRaid

– 80 MB RAM

– Zapis do pamięci podręcznej

• Pamięć podręczna sterownika zwiększa przepustowość

niezależnie od tego, czy aplikacja jest przyjazna dla pamięci podręcznej, czy nie

– Ten sterownik ma dobrą strategię wymiany

Updates on 2 Disks - Cache Size 80Mb

0 500 1000 1500 2000

cache friendly (90Mb) cache unfriendly (900Mb)

Throughput (tuples/sec) no cache

cache

(17)

Konfiguracja sprzętu

• Dodaj pamięć

– Zwiększa bufor bazy danych bez większego stronicowania

• Dodaj dyski

– Dziennik na oddzielnym dysku

– Powielaj (mirror) pliki często czytane – Partycjonuj wielkie pliki

• Dodaj procesory

– Wyrzuć aplikacje inne niż SZBD na inne komputery

– Wyrzuć aplikacje analityczne (np. data mining) na inne komputery

– Zwiększ przepustowość poprzez współdzielenie danych

• Architektura pamięci dzielonej lub dysków dzielonych

(18)

Konfiguracje dzielone

Dziel wszystko

Dziel dyski

Dziel nic

(19)

Konfiguracje

• Dziel wszystko (shared everything)

– jedna pamięć i wiele dysków, być może wiele procesorów – gdy nie ma dobrego podziału obciążenia

• Dziel nic (shared nothing)

– wiele pamięci/procesorów i wiele dysków (każdy swoje) – gdy można równomiernie rozłożyć obciążenie

• Dziel dyski (shared disks)

– wiele procesorów korzystających z wielu dysków podłączonych przez szynę

– Klaster baz danych – wspólne dyski

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

• 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

– 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...