Systemy zarzdzania bazami danych 12 Strojenie systemu operacyjnego
Systemy zarządzania bazami danych 12. Strojenie systemu operacyjnego Oryginał: Shasha & Bonnet 12. Strojenie SO
Do nastrojenia • System operacyjny • Sprzęt – Wątki – Podsystem składowania • Przełączanie kontekstu • Priorytety – Pamięć wirtualna – System plików Oryginał: Shasha & Bonnet • Konfiguracja macierzy dysków • Korzystanie z pamięci podręcznej sterownika – Poprawa parametrów komponentów – Architektury wieloprocesorowe 12. Strojenie SO 2
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ść? Oryginał: Shasha & Bonnet 12. Strojenie SO 3
Odwrócenie priorytetów • Trzy transakcje T 1, T 2, T 3 w porządku priorytetów (T 1 ma najwyższy) a. X Priorytet #1 1. T 3 uzyskuje zamek na x i jest wywłaszczana 2. T 1 czeka na zamek na x, więc jest usypiana 3. T 2 nie potrzebuje x, więc sobie działa długo i szczęśliwie żąd T 1 Priorytet #2 Priorytet #3 ka X y m za T 2 T 3 Stany transakcji działa czeka Oryginał: Shasha & Bonnet – Efekt: T 1 czeka na T 2! 12. Strojenie SO 4
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) Oryginał: Shasha & Bonnet 12. Strojenie SO 5
Poziom współbieżności • DB 2 UDB v 7. 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 DB 2 Oryginał: Shasha & Bonnet 12. Strojenie SO 6
Wielkość bufora bazy danych • Za mały bufor to za mało stosunek trafień = dostępy logiczne – dostępy fizyczne dostępy logiczne PROCESY BAZY DANYCH BUFOR BAZY DANYCH Dysk stronicowania PAMIĘĆ RAM Dziennik Dane Oryginał: Shasha & Bonnet Dane • 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 12. Strojenie SO 7
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 Oryginał: Shasha & Bonnet 12. Strojenie SO 8
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 Oryginał: Shasha & Bonnet 12. Strojenie SO 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 11
Ładowanie na zapas • DB 2 UDB v 7. 1 na Windows 2000 • Pełny odczyt tabeli • Przepustowość rośnie do pewnego punktu razem ze zwiększaniem rozmiaru danych ładowanych na zapas Oryginał: Shasha & Bonnet 12. Strojenie SO 12
Stopień wykorzystania stron • DB 2 UDB v 7. 1 na Windows 2000 • Pełny odczyt tabeli • Przepustowość wyraźnie rośnie wraz ze stopniem wykorzystania Oryginał: Shasha & Bonnet 12. Strojenie SO 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 14
Poziomy RAID – eksperymenty • Intensywnie czytające – Powielenie dysków (RAID 0, RAID 10, RAID 5) 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 16
Pamięć podręczna sterownika • SQL Server 7 (Windows 2000) • Sterownik Adaptec Server. Raid – 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 18
Konfiguracje dzielone Dziel wszystko Dziel dyski Dziel nic Oryginał: Shasha & Bonnet 12. Strojenie SO 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 Oryginał: Shasha & Bonnet 12. Strojenie SO 20
- Slides: 19