Freigeben über


Defragmentieren SQL Server Datenbanklaufwerke

Dieser Artikel enthält einige Anleitungen zur Defragmentierung von SQL Server Datenbanklaufwerken.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 3195161

Sollten SQL Server Datenträger auf der Betriebssystemebene defragmentiert werden?

Dies hängt vom Fragmentierungsstatus der aktuellen Laufwerke ab. Im Allgemeinen tut dies nicht weh und kann hilfreich sein, vorausgesetzt, Sie befolgen die Im Abschnitt Vorsichtsmaßnahmen beim Defragmentieren SQL Server Datenbanklaufwerke beschriebenen Vorsichtsmaßnahmen. Das einzige Negative ist, dass Sie SQL Server herunterfahren müssen, es sei denn, das Defragmentierungstool unterstützt Transaktionsdatenfunktionen. Die gute Nachricht ist, dass Sie die Defragmentierung nach dem Ausführen der Defragmentierung nicht wirklich erneut ausführen müssen, es sei denn, Sie haben viele Autogrowth- und andere Dateien, die auf den Datenträgern ein- und ausgelagert werden. Stellen Sie sicher, dass Sie alle Strategien zum Zwischenspeichern von Schreibvorgängen kennen, die das Hilfsprogramm verwendet. Die Zwischenspeicherung durch ein solches Hilfsprogramm kann einen nicht akkugestützten Cache umfassen, was gegen wal-Protokollanforderungen verstoßen könnte.

Weitere Informationen

Ein Datenträgerdefragmentierer verschiebt alle Dateien, einschließlich der Datenbankdatei, in zusammenhängende Cluster auf einer Festplatte. Dadurch wird der Dateizugriff optimiert und beschleunigt. Wenn Sie Ihre Festplatte nicht defragmentieren, muss das Betriebssystem mit Ausnahme des Windows NT-Betriebssystems möglicherweise an mehrere physische Speicherorte auf dem Datenträger wechseln, um die Datenbankdatei abzurufen, wodurch der Dateizugriff langsamer wird.

Da der Zugriff auf physische Daten der teuerste Teil einer E/A-Anforderung ist, kann die Defragmentierung zu Leistungssteigerungen für SQL Server und andere Anwendungen führen. Die Positionierung von datenbezogenen Datenblöcken nahe beieinander reduziert die E/A-Anforderungen.

Heute sind verschiedene Defragmentierungshilfsprogramme auf dem Markt verfügbar. Einige Hilfsprogramme ermöglichen die Defragmentierung für geöffnete Dateien, während andere die Defragmentierung geschlossener Dateien erfordern oder eine bessere Leistung erbringen, wenn sie unter Bedingungen mit geschlossenen Dateien verwendet werden. Darüber hinaus verfügen einige Hilfsprogramme über Transaktionsfunktionen, andere nicht.

Vorsichtsmaßnahmen beim Defragmentieren SQL Server Datenbanklaufwerken

Wenn Sie ein Defragmentierungshilfsprogramm für die Verwendung mit SQL Server auswerten, stellen Sie sicher, dass das Hilfsprogramm Transaktionsdatenfunktionen bereitstellt. Wählen Sie insbesondere ein Defragmentierungshilfsprogramm aus, das die folgenden Transaktionsdatenfunktionen bereitstellt:

  • Der ursprüngliche Sektor gilt erst als verschoben, wenn der neue Sektor erfolgreich eingerichtet und die Daten erfolgreich kopiert wurden.

  • Das Hilfsprogramm schützt vor Einem Systemausfall, z. B. einem Stromausfall, auf sichere Weise, sodass die Dateien logisch und physisch intakt bleiben. Um die Datenintegrität zu gewährleisten, wird ein Pull-the-Plug-Test dringend empfohlen, wenn ein Defragmentierungshilfsprogramm für eine SQL Server-basierte Datei ausgeführt wird.

  • Das wal-Protokoll (Write-Ahead Logging) erfordert die Verhinderung von Sektor-Umschreibungen, um Datenverluste zu vermeiden. Das Hilfsprogramm muss die physische Integrität der Datei beibehalten, solange datenverschiebungen ausgeführt werden. Das Hilfsprogramm sollte auf transaktionale Weise an Sektorgrenzen arbeiten, um die SQL Server Dateien intakt zu halten.

  • Das Hilfsprogramm sollte geeignete Sperrmechanismen bereitstellen, um sicherzustellen, dass die Datei ein konsistentes Image für änderungen beibehält. Das Hilfsprogramm sollte beispielsweise sicherstellen, dass der ursprüngliche Sektor nicht geändert werden kann, wenn er an einen neuen Speicherort kopiert wird. Wenn Änderungen zulässig sind, kann das Defragmentierungshilfsprogramm den Schreibvorgang verlieren.

Kritische Datenträgerdefragmentierungsfunktionen, die diese Transaktionsdatenfunktionen nicht bereitstellen, sollten nur verwendet werden, wenn die SQL Server instance, die die zu defragmentierenden Datenträger verwenden, heruntergefahren wurde, sodass Sie geöffnete Datenbankdateien nicht defragmentieren.

Die Defragmentierung von offenen Dateien löst mehrere mögliche Probleme auf, die bei der Defragmentierung geschlossener Dateien in der Regel nicht auftreten:

  • Die Defragmentierung von offenen Dateien wirkt sich auf die Leistung aus. Defragmentierungshilfsprogramme können Abschnitte der Datei sperren, hindern SQL Server daran, einen Lese- oder Schreibvorgang abzuschließen. Dies kann sich auf die Parallelität des Servers auswirken, auf dem SQL Server ausgeführt wird. Wenden Sie sich an den Hersteller des Defragmentierungstools, um zu erfahren, wie Dateien gesperrt werden und wie sich dies auf SQL Server Parallelität auswirken kann.

  • Die Defragmentierung von offenen Dateien kann sich auf die Zwischenspeicherung und Sortierung von Schreibvorgängen auswirken. Dateibasierte Hilfsprogramme erfordern E/A-Pfadkomponenten. Diese Komponenten dürfen die Reihenfolge oder beabsichtigte Natur des Schreibvorgangs nicht ändern. Wenn die Durchschreib- oder WAL-Protokollmandanten beschädigt sind, wird wahrscheinlich eine Datenbank beschädigt. Die Datenbank und alle zugehörigen Dateien werden als einzelne Entität betrachtet. (Dies wird in vielen Microsoft Knowledge Base-Artikeln, SQL Server-Onlinedokumentation und verschiedenen Whitepapers behandelt.) Alle Schreibvorgänge müssen die ursprünglichen Schreibreihenfolgen und Durchschreibfunktionen beibehalten.

Empfehlungen

  • Defragmentieren Sie das NTFS-Volume, sofern es nicht formatiert wurde, bevor Sie eine neue Datenbank erstellen oder vorhandene Datenbanken auf das Volume verschieben.
  • Stellen Sie sicher, dass Sie Ihre SQL-Daten und Protokolldateien beim ersten Erstellen der Datenbank entsprechend planen und dimensionieren.
  • Erstellen Sie Ihre vorab SQL Server 2014-Transaktionsprotokolle unter Berücksichtigung der automatischen Vergrößerung, falls diese verwendet wird.
  • Defragmentieren Sie die Datenträger, auf denen sich Ihre Transaktionsprotokolle befinden. Dadurch wird die Externe Dateifragmentierung des Transaktionsprotokolls verhindert. Dieses Problem kann auftreten, wenn Ihre Dateien eine große Anzahl von Automatischen Vergrößerungen aufweisen oder wenn es sich nicht um einen dedizierten Datenträger handelt, der viele Datenbanken, Protokolle oder andere Dateien enthält, die geändert wurden. In diesem Fall können Dateien (einschließlich der Transaktionsprotokolldatei) verschachtelt und fragmentiert sein.
  • Wenn Sie Datenbanklaufwerke defragmentieren, bei denen es sich um Clusterdatenträger handelt, sollten die Clusterdatenträger so eingerichtet werden, dass die Integritätsüberwachung angehalten wird (auch als Wartungsmodus bezeichnet).
  • Um die Fragmentierung zu minimieren, verkleinern Sie Ihre Datenbankdateien nicht. Vergrößern Sie sie außerdem manuell in Größen, die die Wachstumsaktivität minimieren.
  • Bewahren Sie Ihre Datenbankdateien auf dedizierten Datenträgern auf.
  • Führen Sie eine vollständige Sicherung durch, bevor Sie die Speicherorte defragmentieren, die SQL Server Datenbank- und Sicherungsdateien enthalten.

References