Steven Wort, Christian Bolton, Justin Langford, Michael Cape, Joshua J. Jin, Douglas Hinson, Haidong Ji, Paul A. Mestemaker, Arindam Sen
Konfiguracja i optymalizacja kolejnych wersji serwera SQL sprowadzała się do ustawienia kilku opcji. Dopóki wielkość baz danych nie przekraczała kilkuset gigabajtów a liczba ich użytkowników kilkudziesięciu, zdolności serwera SQL do autoregulacji zapewniały mu odpowiedni poziom wydajności. W rezultacie wielu programistów i administratorów nigdy nie musiało optymalizować pracy serwera SQL. Teraz sytuacja wygląda inaczej - pora nauczyć się diagnozować i rozwiązywać problemy wydajnościowe!
Twój serwer SQL 2005 działa zbyt wolno? Przeczytaj tę książkę
Konfiguracja i optymalizacja kolejnych wersji serwera SQL sprowadzała się do ustawienia kilku opcji: współczynnika wypełnienia stron, limitu dostępnej pamięci itd. Dopóki wielkość baz danych nie przekraczała kilkuset gigabajtów a liczba ich użytkowników kilkudziesięciu, zdolności serwera SQL do autoregulacji zapewniały mu odpowiedni poziom wydajności. W rezultacie wielu programistów i administratorów nigdy nie musiało optymalizować pracy serwera SQL. Teraz sytuacja wygląda inaczej — pora nauczyć się diagnozować i rozwiązywać problemy wydajnościowe!
Część I czyli uczymy się wykrywać „wąskie gardła”
Pierwsze pięć rozdziałów książki opisuje metodykę diagnozowania problemów wydajnościowych:
- W pierwszym rozdziale znajdziemy informacje o używanych w dalszej części książki narzędziach, między innymi odnośnik do strony zawierającej kilkadziesiąt przygotowanych przez dział wsparcia klientów firmy Microsoft skryptów monitorujących pracę serwera SQL 2005.
- Drugi rozdział poświęcony został monitorowaniu zasobów serwera Windows za pomocą programu Perfmon — oprócz świetnego opisu najważniejszych liczników wydajności (i zależności pomiędzy ich wynikami) w rozdziale tym przedstawiony został sposób uruchomienia 32-bitowych liczników w środowisku 64-bitowych systemów operacyjnych i ułatwiający analizę otrzymanych w ten sposób danych program Performance Analysis of Logs (uwaga, program przeznaczony jest dla angielskich wersji systemu operacyjnego).
- Po określeniu wydajności systemu należy sprawdzić których zasobów brakuje serwerowi SQL — w trzecim rozdziale przedstawione zostały liczniki wydajności serwera SQL oraz procedura importu zebranych przez nie danych do tabel w bazie danych.
- Serwer SQL 2005 samodzielnie zarządza dostępnymi zasobami, dlatego właściwa interpretacja zebranych za pomocą programu Perfmon danych wymaga szczegółowej wiedzy na temat wewnętrznych mechanizmów jego działania. Na szczęście widoki dynamiczne udostępniają szczegółowe informacje o aktualnym stanie serwera SQL 2005, w tym informacje na temat czasu przez który poszczególne operacje czekały na możliwość wykonania — jak je odczytywać i interpretować dowiemy się z rozdziału czwartego.
- W rozdziale piątym znajdziemy opis programu SQL Profiler, między innymi jego użycie do przechwytywania informacji o zablokowanych (zbyt długo oczekujących na dostęp do zasobów) procesach..
Część II czyli rozwiązujemy wykryte problemy
Cztery kolejne rozdziały zawierają opis sposobów eliminowania przyczyn problemów wydajnościowych:
- Rozdział szósty poświecony został właściwej konfiguracji systemu operacyjnego, we tym pamięci, macierzy dyskowych i procesorów. Na tym etapie należy sprawdzić konfigurację używanego serwera, a nie rozbudowywać go o dodatkowe podzespoły!
- Rozdział siódmy to przypomnienie najważniejszych opcji konfiguracyjnych serwera SQL 2005.
- Przesłaniem rozdziału ósmego jest stwierdzenie „Celem nie jest ułatwienie życia programistom bazodanowym, tylko stworzenie wydajnej i skalowanej bazy danych” — ten rozdział powinien przeczytać każdy, kto pisze w języku T-SQL choćby po to, żeby dowiedzieć się dlaczego dyrektywa NOCOUNT ma tak duży wpływ na wydajność procedur składowanych.
- Rozdział dziewiąty poświecony został optymalizacji zapytań. Temat bardzo obszerny, nic więc dziwnego że rozdział liczy prawie 80 stron, na których znalazły się m.in.: opis planów wykonań zapytań i używanych w nich operatów oraz zbiór wskazówek pozwalających poprawić wydajność większości typowych zapytań.
- W rozdziale dziesiątym znajdziemy opis znanego nam już z pierwszej części książki program Profiler, tym razem użytego do odtwarzania przechwyconych na produkcyjnym serwerze plików śledzenia — świetny sposób na porównanie wydajności oryginalnych i zoptymalizowanych zapytań.
- Rozdział jedenasty w całości poświęcony został indeksom. Znajdziemy w nim ich opis, wskazówki dotyczące defragmentacji i informacje na temat pracy z programem Database Tuning Advisor.
Części III i IV czyli co jeszcze warto wiedzieć o optymalizowaniu wydajności
Ostatnie 120 stron książki poświecone zostało tematom których nie udało się zaklasyfikować ani do wykrywania, ani do usuwania problemów wydajnościowych:
- Rozdział dwunasty prezentuje dwa darmowe narzędzia do monitorowania wydajności (SQLIO) oraz niezawodności (SQLIOSim) dysków twardych.
- Rozdział trzynasty zawiera opis konsoli Performance Dashboard Reports — po jej zainstalowaniu (co wymaga pakietu SP2) w konsoli SSMS znajdziemy kilkadziesiąt dodatkowych raportów wydajności.
- Dwa ostatnie rozdziały to zbiory wskazówek dotyczących uwzględniania wydajności sytemu bazodanowego w trakcie całego procesu tworzenia systemu bazodanowego, od jego zaplanowania po wdrożenie.
Autor recenzji: Marcin Szeliga