P:
Co robi defragmentacja dla systemów SQL?
ZA:Ciągłe utrzymanie i monitorowanie bazy danych są kluczowymi elementami, które należy wziąć pod uwagę w celu płynnego działania systemu SQL. Gdy baza danych jest tworzona i zapełniana, początkowo dane są umieszczane w ciągłej fizycznej lokalizacji (jeśli dostępna jest wystarczająca ciągła fizyczna przestrzeń). Zatem w tym przypadku logiczne uporządkowanie i fizyczne uporządkowanie danych prawdopodobnie będą podobne i zwiększy wydajność.
Gdy dane są modyfikowane, usuwane lub aktualizowane, odpowiednie indeksy są również aktualizowane automatycznie, aby odzwierciedlić te zmiany. W wyniku tego indeksy ulegają fragmentacji, a informacje są rozproszone w przestrzeni pamięci. Zmienia fizyczne uporządkowanie danych (ponieważ traci ciągły przydział), a pobieranie staje się czasochłonne, co powoduje niską wydajność bazy danych.
Rozwiązaniem tego problemu jest przeprowadzanie okresowej defragmentacji. Defragmentacja faktycznie odbudowuje lub reorganizuje indeksy, aby dopasować logiczne uporządkowanie danych do fizycznego uporządkowania. Przed wykonaniem jakiejkolwiek operacji defragmentacji należy poprawnie przeanalizować wszystkie indeksy. Wyniki analizy określają, czy wymagana jest reorganizacja czy przebudowa.
Dwie główne operacje wykonywane przez proces defragmentacji to:
- Reorganizacja indeksu - reorganizacja indeksu jest przeprowadzana, gdy fragmentacja jest na niskim poziomie i nie ma to znacznego wpływu na wydajność. Ten proces faktycznie dokonuje fizycznego ponownego zamawiania stron na poziomie liścia, aby dopasować je do logicznej kolejności. Nie tworzy żadnych nowych stron; zmienia tylko kolejność istniejących stron. Reorganizację można przeprowadzić, gdy system jest online, bez blokowania normalnych operacji na bazie danych.
- Odbudowywanie indeksu - proces odbudowywania indeksu jest wykonywany, gdy fragmentacja jest głębsza, a wydajność jest zbyt niska. W tym procesie oryginalny indeks jest usuwany i tworzony jest nowy indeks. Zatem fizyczne i logiczne porządkowanie jest przywracane do pierwotnych pozycji, a wydajność poprawia różnorodność. Odbudowywanie może również tworzyć nowe strony zgodnie z wymaganiami i może być wykonywane w trybie offline lub online.
Dlatego defragmentacja powinna być częścią procesu konserwacji programu SQL Server i musi być traktowana poważnie. Należy zbudować odpowiedni plan analizy zapytań i postępować zgodnie z nim. W oparciu o wyniki analizy zapytań należy przeprowadzić przebudowę lub reorganizację indeksów. Krótko mówiąc, defragmentacja jest niezbędna do poprawy wydajności systemów SQL.