Udostępnij za pośrednictwem


Defragmentowanie dysków bazy danych programu SQL Server

Ten artykuł zawiera wskazówki dotyczące defragmentacji dysków bazy danych programu SQL Server.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 3195161

Czy dyski programu SQL Server powinny być defragmentowane w warstwie systemu operacyjnego?

Zależy to od stanu fragmentacji bieżących dysków. Ogólnie rzecz biorąc, nie boli i może to pomóc, zakładając, że stosujesz środki ostrożności opisane w sekcji Środki ostrożności podczas defragmentowania dysków bazy danych programu SQL Server. Jedyną negatywną wartością jest to, że należy zamknąć program SQL Server , chyba że narzędzie defragmentacji obsługuje możliwości danych transakcyjnych. Dobrą wiadomością jest to, że po uruchomieniu defragmentowania naprawdę nie trzeba tego robić ponownie, chyba że masz wiele autogrowth i innych plików przechodzących i wyłączających dyski. Upewnij się, że rozumiesz wszystkie strategie buforowania zapisu używane przez narzędzie. Buforowanie przez takie narzędzie może obejmować nieobsługiwalną pamięć podręczną, co może naruszać wymagania dotyczące protokołu WAL.

Więcej informacji

Defragmentator dysku przenosi wszystkie pliki, w tym plik bazy danych, do ciągłych klastrów na dysku twardym. Pozwala to zoptymalizować i przyspieszyć dostęp do plików. Z wyjątkiem systemu operacyjnego Windows NT, jeśli nie defragmentujesz dysku twardego, system operacyjny może wymagać przejścia do kilku lokalizacji fizycznych na dysku, aby pobrać plik bazy danych, co spowalnia dostęp do plików.

Ponieważ dostęp do danych fizycznych jest najdroższą częścią żądania we/wy, defragmentacja może zapewnić wzrost wydajności dla programu SQL Server i innych aplikacji. Pozycjonowanie fragmentów danych blisko siebie zmniejsza wymagania dotyczące operacji we/wy.

Różne narzędzia defragmentacji są obecnie dostępne na rynku. Niektóre narzędzia umożliwiają defragmentację otwartych plików, natomiast inne wymagają defragmentacji zamkniętego pliku lub działają lepiej, gdy są używane w warunkach zamkniętych plików. Ponadto niektóre narzędzia mają możliwości transakcyjne, a inne nie.

Środki ostrożności podczas defragmentowania dysków bazy danych programu SQL Server

Podczas oceniania narzędzia defragmentacji do użycia z programem SQL Server upewnij się, że narzędzie zapewnia możliwości danych transakcyjnych. W szczególności wybierz narzędzie defragmentacji, które zapewnia następujące możliwości danych transakcyjnych:

  • Oryginalny sektor nie jest uznawany za przeniesiony do momentu pomyślnego ustanowienia nowego sektora i pomyślnego skopiowania danych.

  • Narzędzie chroni przed awarią systemu, taką jak awaria zasilania, w bezpieczny sposób, który utrzymuje pliki logicznie i fizycznie nienaruszone. Aby zagwarantować integralność danych, test ściągania wtyczki jest zdecydowanie zalecany, gdy narzędzie defragmentacji jest uruchomione w pliku opartym na programie SQL Server.

  • Protokół rejestrowania zapisu z wyprzedzeniem (WAL) wymaga zapobiegania ponownemu zapisywaniu sektorów, aby uniknąć utraty danych. Narzędzie musi zachować fizyczną integralność pliku, o ile wykonuje on przenoszenie danych. Narzędzie powinno działać na granicach sektora w sposób transakcyjny, aby zachować nienaruszone pliki programu SQL Server.

  • Narzędzie powinno zapewnić odpowiednie mechanizmy blokowania, aby zagwarantować, że plik zachowuje spójny obraz pod kątem wszelkich modyfikacji. Na przykład narzędzie powinno zapewnić, że nie można zmodyfikować oryginalnego sektora podczas kopiowania do nowej lokalizacji. Jeśli modyfikacje były dozwolone, narzędzie defragmentacji może utracić zapis.

Krytyczne defragmentatory dysków, które nie zapewniają tych transakcyjnych możliwości danych, nie powinny być używane, chyba że wystąpienie programu SQL Server używające dysków do defragmentacji zostało zamknięte, aby nie defragmentować otwartych plików bazy danych.

Defragmentacja otwierania pliku zgłasza kilka możliwych problemów, których zwykle nie ma defragmentacja zamkniętego pliku:

  • Defragmentacja otwierania pliku wpływa na wydajność. Narzędzia defragmentacji mogą blokować sekcje pliku, uniemożliwiając programowi SQL Server ukończenie operacji odczytu lub zapisu. Może to mieć wpływ na współbieżność serwera z uruchomionym programem SQL Server. Skontaktuj się z producentem narzędzia defragmentacji, aby dowiedzieć się, jak pliki są zablokowane i jak może to mieć wpływ na współbieżność programu SQL Server.

  • Defragmentowanie otwartych plików może mieć wpływ na buforowanie i porządkowanie zapisu. Narzędzia oparte na plikach open-file wymagają składników ścieżki we/wy; te składniki nie mogą zmieniać kolejności ani zamierzonego charakteru operacji zapisu. Jeśli dzierżawy protokołu zapisu lub WAL są uszkodzone, prawdopodobnie wystąpią uszkodzenia bazy danych. Baza danych i wszystkie skojarzone pliki są uważane za jedną jednostkę. (Jest to omówione w wielu artykułach z bazy wiedzy Microsoft Knowledge Base, książkach programu SQL Server Online i różnych oficjalnych dokumentach). Wszystkie zapisy muszą zachować oryginalne sekwencje porządkowania zapisu i możliwości zapisu.

Zalecenia

  • Defragmentuj wolumin NTFS, chyba że został sformatowany, przed utworzeniem nowej bazy danych lub przenieś istniejące bazy danych do woluminu.
  • Upewnij się, że planujesz i odpowiednio określasz rozmiar danych SQL i plików dziennika podczas tworzenia bazy danych.
  • Utwórz dzienniki transakcji przed programem SQL Server 2014 z uwzględnieniem automatycznego zwiększania, jeśli zostaną użyte.
  • Defragmentuj dysk lub dyski, na których znajdują się dzienniki transakcji. Uniemożliwi to fragmentację pliku zewnętrznego dziennika transakcji. Ten problem może wystąpić, jeśli pliki miały dużo automatycznego zwiększania lub gdy nie jest to dedykowany dysk, który zawiera wiele baz danych, dzienników lub innych plików, które zostały zmodyfikowane. W takiej sytuacji pliki (w tym plik dziennika transakcji) mogą być przeplatane i fragmentowane.
  • Jeśli defragmentujesz dyski bazy danych, które są dyskami klastra, należy skonfigurować dyski klastra w celu wstrzymania monitorowania kondycji (nazywanego również trybem konserwacji).
  • Aby zminimalizować fragmentację, nie zmniejszaj plików bazy danych. Ponadto ręcznie zwiększ je w rozmiarach, które minimalizują aktywność wzrostu.
  • Zachowaj pliki bazy danych na dedykowanych dyskach.
  • Wykonaj pełną kopię zapasową, zanim zdefragmentujesz te lokalizacje, które zawierają bazę danych programu SQL Server i pliki kopii zapasowej.

Informacje