Jedną z najbardziej krytycznych zmiennych dla wydajności bazy danych jest fragmentacja indeksu SQL. Jeśli poziom fragmentacji nie jest odpowiednio zarządzany, możemy napotkać blokady, deadlocki, problemy z IO, problemy z rozlaniem dysku. Może to również prowadzić do niewłaściwego planu wykonania.
DMVs
W SQL Server, możemy użyć DMV sys.dm_db_index_physical_stats aby uzyskać informacje o poziomie fragmentacji indeksu, liczbach stron i typach indeksów używając tego.
SSMS
Możemy również użyć wbudowanych raportów SQL Server 'Statystyki fizyczne indeksu’ w SSMS
Uzyskamy statystyki fizyczne indeksu dla bazy danych w następującym formacie.
Jesteśmy ograniczeni do uruchamiania tego raportu na poziomie bazy danych, a jeśli mamy wiele baz danych w instancji i wiele instancji do zarządzania, staje się to czasochłonnym i pochłaniającym zasoby zadaniem, aby zebrać szczegóły, przeanalizować status w oparciu o nasz status progowy, a następnie zdecydować o odbudowie lub reorganizacji indeksu SQL.
Skrypty niestandardowe
Możemy użyć skryptów niestandardowych również do wykrywania i naprawiania problemów z fragmentacją, ale jest to również skomplikowany proces, aby ustalić i przeanalizować wyniki ręcznie. Możemy chcieć mieć wszystkie te informacje w jednym scentralizowanym miejscu, a następnie zdecydować o polityce utrzymania indeksu. Możemy użyć polecenia Alter Index, aby usunąć poziom fragmentacji. Dla małych baz danych, nie przejmujemy się zbytnio liczbą stron podczas przebudowy indeksu, jednak dla dużych baz danych musimy wziąć je pod uwagę.
Narzędzia firm trzecich
Możemy łatwo monitorować, analizować i usuwać istniejącą fragmentację indeksu SQL używając ApexSQL Defrag. Możemy zarządzać wieloma instancjami i bazami danych w graficznym narzędziu. Uzyskujemy następujące korzyści z tego narzędzia.
- Zapewnia graficzny interfejs użytkownika do monitorowania i analizowania fragmentacji indeksów
- Możemy wykonać konserwację indeksów dla wszystkich instancji SQL Server i baz danych
- Zapewnia możliwość konfiguracji niestandardowych raportów w oparciu o nasze wymagania
- Możemy skonfigurować polityki, aby sprawdzić i wykonać zadania konserwacji indeksów zgodnie z niestandardowymi metrykami
- Możemy analizować (szybką lub głęboką) fragmentację indeksów,
- Możemy przygotować raporty w żądanych formatach (CSV lub HTML)
Po zainstalowaniu narzędzia ApexSQL Defrag i skonfigurowaniu instancji do monitorowania, pokazuje ono szybko szczegóły statusu fragmentacji indeksu SQL.
Powinniśmy unikać operacji przebudowy lub reorganizacji indeksów SQL, jeśli nie jest to wymagane. Jeśli mamy bardzo duże indeksy, ich analiza może zająć dużo czasu i zasobów systemowych. ApexSQL Defrag daje możliwość sprawdzenia fragmentacji.
- Ograniczone: W tym trybie skanowania SQL Server zbiera ograniczone informacje na temat fragmentacji. Nie powoduje to żadnych problemów z wydajnością systemu. Jest to domyślny tryb w ApexSQL Defrag
- Próbkowany: W tym trybie pobierana jest przykładowa porcja indeksu SQL i zbierane są informacje o fragmentacji
- Szczegółowy: Uzyskujemy szczegółową wiedzę na temat wszystkich stron indeksu; może to spowodować pewne koszty ogólne dla zasobów systemowych, jednak możemy go użyć, jeśli obserwujemy wysoką fragmentację z powyższymi trybami skanowania
Podobnie, możemy ustawić poziom fragmentacji w kategorii High, Medium i Low.
Można również ustawić swój wygrany próg fragmentacji do analizy indeksów.
Po przeanalizowaniu zestawu wyników, kliknij prawym przyciskiem myszy na konkretny indeks SQL i możesz mieć wiele opcji do wyboru.
- Analizuj (szybko)
- Analizuj (głęboko)
- Reorganizuj
- Reorganizuj
- Ustaw współczynnik wypełnienia
- Możemy wstrzymać, zatrzymać lub anulować jeśli jakieś zadanie jest uruchomione dla tego indeksu. Jest to przydatne, jeśli widzimy jakiekolwiek problemy z wydajnością lub blokowanie z powodu konkretnego indeksu, możemy anulować to zadanie
ApexSQL Defrag pozwala na tworzenie polityk z predefiniowanych szablonów lub przez własne parametry. Szablon jest również odpowiedni dla większości wymagań defragmentacji indeksów SQL.
Używając tych szablonów, możemy zdecydować się na defragmentację wszystkich indeksów lub indeksów w oparciu o poziom progowy w trybie offline lub online. Na przykład, chcę stworzyć politykę do Przebudowy online top 50% najbardziej pofragmentowanych indeksów powyżej 30% lub reorganizacji jeśli pofragmentowane powyżej 10%.
Możemy skonfigurować próg zasobów dotyczących CPU, obciążenia pamięci, użycia dziennika transakcji, aktywnych transakcji, jak również. Nie otrzymujemy tego poziomu kontroli nad utrzymaniem indeksu za pomocą zadań kreatora konserwacji lub niestandardowych skryptów.
Jeśli zasób jest zajęty, możemy również ustawić czas ponawiania prób. Widziałem wymagania niektórych użytkowników, którzy nie chcą wykonywać konserwacji po zakończeniu okresu użytkowania bazy danych. Jeśli wykonujemy konserwację, musimy zatrzymać zadanie ręcznie, lub musimy utworzyć inne zadanie agenta SQL, aby zatrzymać zadanie konserwacji indeksu w określonym czasie.
ApexSQL Defrag zapewnia możliwość konfiguracji i monitorowania wielu zadań. Możemy dostosować anulowanie zadania konserwacji indeksu po 'N’ liczbie godzin.
Na powyższym zrzucie ekranu widać, że możemy dalej dostosowywać operacje konserwacji indeksu SQL poprzez poziom fragmentacji, rozmiar indeksu oraz liczbę stron. Możesz określić opóźnienie blokowania obiektu przez określony czas. Czasami chcemy wykluczyć indeks, dla którego liczba stron indeksu jest mniejsza lub większa od podanych wartości
Możesz wprowadzić zmiany i skonfigurować je jako szablon do ponownego użycia. Kiedy już przeprowadzimy konserwację indeksu, w zakładce Activities otrzymujemy doskonały przegląd statystyk fragmentacji indeksu przed i po konserwacji. Istotne jest, aby wiedzieć, czy poziom fragmentacji indeksu jest pod kontrolą, czy nie po konserwacji. Zazwyczaj musimy ponownie uchwycić poziom fragmentacji, ale dzięki tej informacji oszczędzamy sobie kosztów ogólnych.
W sekcji Raporty, możemy przeglądać raporty z poziomu serwera, raport ogólny.
Możemy również uzyskać ładny widok na 10 najlepszych indeksów klastrowanych i nieklastrowanych, jak również.
Jesteśmy również zainteresowani, aby poznać zachowanie CPU i pamięci podczas konserwacji indeksu jest uruchomiony. Możemy uzyskać te przydatne informacje i mieć oko na zasoby systemowe, jak również.
Możemy wyeksportować wszystkie raporty i skonfigurować opcję eksportu. Może się zdarzyć, że będziemy chcieli wyodrębnić ograniczone informacje podczas eksploracji. ApexSQL Defrag daje możliwość wyboru informacji do wyświetlenia, takich jak wykresy, statystyki, wykresy statystyk indeksów SQL, które chcemy zawrzeć w raporcie.
Podsumowanie:
Narzędzie ApexSQL Defrag ułatwia DBA wykonywanie zadań administracyjnych dzięki lepszemu monitorowaniu i konserwacji indeksów SQL. Wszystkie informacje są dostępne w formie graficznej z niestandardowymi wizualizacjami, politykami oraz różnymi raportami informacyjnymi.