Według Microsoft SQL Master, Brenta Ozara, przez całą swoją karierę podejmował on okropne decyzje dotyczące dostosowywania wydajności bazy danych. Na szczęście dla nas możemy skorzystać na jego błędach i nie musimy wszystkiego domyślać się sami. Podzielił się swoją ciężko zdobytą wiedzą za darmo podczas serii webcastów Quest’s Database Training Days.
Podczas jednej z jego sesji dowiedzieliśmy się „Dlaczego defragmentacja indeksów nie pomaga”. W rzeczywistości może to pogorszyć wydajność Twojej bazy danych, a Brent wyjaśnił nam, dlaczego. Po drodze podkreślił, jak ważne jest, aby wiedzieć, co mierzysz, jeśli chodzi o optymalizację wydajności SQL Server.
Wewnętrzna i zewnętrzna fragmentacja
Brent dał nam krótki samouczek dotyczący sposobu, w jaki SQL Server przechowuje dane na „stronach” o wielkości 8 KB. W nowym lub przebudowanym indeksie wszystkie strony są pełne i przechowywane w odpowiedniej kolejności. Jednak w miarę dodawania większej ilości danych strony ulegają podziałowi:nie wszystkie strony są pełne i występują niewłaściwie. To jest istotna różnica między fragmentacją wewnętrzną a zewnętrzną:
- Zewnętrzna fragmentacja – odnosi się do stron, które są niesprawne
- Wewnętrzna fragmentacja – odnosi się do pustego miejsca na stronie
Mniejsze skupienie się na podziałach na stronie
Wielu specjalistów od baz danych skupia się na podziałach stron jako mierze fragmentacji bazy danych, jednak Brent wyjaśnił, że liczba ta jest bez znaczenia, ponieważ podziały stron występują zarówno podczas dodawania nowego wiersza do pustej tabeli, jak i podczas dodawania nowej strony. Więc to w końcu nie jest pomocne.
Jak fragmentacja zewnętrzna może pogorszyć sytuację
Podczas tej sesji Brent zapewnił, że zewnętrzna fragmentacja nie jest użyteczną miarą wydajności bazy danych, ponieważ kolejność stron nie ma dużego wpływu na szybkość zadań konserwacyjnych, uruchamiania zapytań w pamięci RAM czy odczytywania danych z dysku. Tak więc specjaliści od baz danych, którzy próbują naprawić zewnętrzną fragmentację, reorganizując i odbudowując indeksy, w rzeczywistości pogarszają wydajność, zwiększając liczbę kopii zapasowych i zużywając więcej czasu na konserwację.
Specjaliści od baz danych, którzy próbują zmniejszyć zewnętrzną fragmentację, pozostawiając miejsce na stronach poprzez ustawienie współczynnika wypełnienia, również powodują problem gorszy niż ten, który próbują naprawić. Dzieje się tak głównie dlatego, że prawie nigdy nie trzeba wstawiać danych w punkcie w środku indeksu. Tak więc próba utrzymania porządku na stronach poprzez umieszczanie mniejszej ilości danych na każdej stronie powoduje w rzeczywistości wewnętrzną fragmentację.
Czas oczekiwania na monitorowanie
Co powinieneś zrobić zamiast tego? Brent zaleca ustawienie współczynnika wypełnienia na domyślną wartość 100% (lub co najmniej 80% lub więcej), a następnie przebudowanie indeksów w celu ich ponownego spakowania. Następnie skup się na monitorowaniu właściwego numeru dostrajania wydajności – czasu oczekiwania. Jednym z najlepszych sposobów przeglądania różnych aspektów czasu oczekiwania w instancjach bazy danych jest użycie narzędzia do monitorowania wydajności, aby dokładnie określić, gdzie procesy się ugrzęzły.
Aby uzyskać jeszcze więcej informacji Brent na temat fragmentacji indeksu, statystyk czasu oczekiwania i tego, co należy zrobić w zakresie konserwacji indeksu, słuchaj transmisji internetowej na żądanie.
Możesz również uzyskać dostęp do dodatkowych porad ekspertów na temat wydajności bazy danych w ramach Dni szkoleniowych w zakresie baz danych firmy Quest.