Freigeben über


Defragmentieren von SQL Server-Datenbankdatenträgern

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 Fragmentierungszustand der aktuellen Laufwerke ab. Im Allgemeinen tut es nicht weh, und es kann hilfreich sein, vorausgesetzt, Sie befolgen die Vorsichtsmaßnahmen, die im Abschnitt "Vorsichtsmaßnahmen beim Defragmentieren von SQL Server-Datenbanklaufwerken " beschrieben werden. 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, nachdem Sie die Defragmentierung ausgeführt haben, nicht wirklich erneut ausführen müssen, es sei denn, Sie haben viele Automatische Vergrößerungen und andere Dateien, die auf den Datenträgern verschoben und deaktiviert werden. Stellen Sie sicher, dass Sie alle von dem Dienstprogramm verwendeten Schreibzwischenspeicherungsstrategien verstehen. Das Zwischenspeichern durch ein solches Hilfsprogramm kann einen nicht akkugestützten Cache umfassen, und dies könnte gegen WAL-Protokollanforderungen verstoßen.

Weitere Informationen

Eine Datenträgerdefragmentierung verschiebt alle Dateien, einschließlich der Datenbankdatei, in zusammenhängende Cluster auf einer Festplatte. Dadurch wird der Dateizugriff optimiert und beschleunigt. Mit Ausnahme des Windows NT-Betriebssystems muss das Betriebssystem möglicherweise zu mehreren physischen Speicherorten auf dem Datenträger wechseln, um die Datenbankdatei abzurufen, sodass der Dateizugriff langsamer wird.

Da der Zugriff auf physische Daten der teuerste Teil einer E/A-Anforderung ist, kann die Defragmentierung Leistungssteigerungen für SQL Server und andere Anwendungen bieten. Positionierungsbezogene Datenblöcke in der Nähe reduzieren die E/A-Vorgangsanforderungen.

Verschiedene Defragmentierungshilfsprogramme sind heute auf dem Markt erhältlich. Einige Dienstprogramme ermöglichen die Defragmentierung für geöffnete Dateien, während andere eine Defragmentierung von Geschlossenen Dateien erfordern oder bei Verwendung unter Bedingungen für geschlossene Dateien besser funktionieren. Darüber hinaus verfügen einige Dienstprogramme über Transaktionsfunktionen, während andere nicht.

Vorsichtsmaßnahmen beim Defragmentieren von SQL Server-Datenbanklaufwerken

Stellen Sie beim Auswerten eines Defragmentierungsprogramms für die Verwendung mit SQL Server sicher, dass das Hilfsprogramm Transaktionsdatenfunktionen bereitstellt. Wählen Sie insbesondere ein Defragmentierungshilfsprogramm aus, das die folgenden Transaktionsdatenfunktionen bereitstellt:

  • Der ursprüngliche Sektor wird erst dann als verschoben betrachtet, wenn der neue Sektor erfolgreich aufgebaut wurde und die Daten erfolgreich kopiert wurden.

  • Das Dienstprogramm schützt vor einem Systemausfall, z. B. einem Stromausfall, auf sichere Weise, die die Dateien logisch und physisch intakt hält. Um die Datenintegrität zu gewährleisten, wird ein Pull-the-Plug-Test dringend empfohlen, wenn ein Defragmentierungsprogramm auf einer SQL Server-basierten Datei ausgeführt wird.

  • Das Write-Ahead Logging (WAL)-Protokoll erfordert die Verhinderung von Sektorumschreibungen, um Datenverluste zu vermeiden. Das Hilfsprogramm muss die physische Integrität der Datei beibehalten, solange eine Datenverschiebung ausgeführt wird. Das Hilfsprogramm sollte auf transaktionsseitige Weise an Branchengrenzen arbeiten, um die SQL Server-Dateien intakt zu halten.

  • Das Hilfsprogramm sollte geeignete Sperrmechanismen bereitstellen, um sicherzustellen, dass die Datei für alle Änderungen ein einheitliches Bild behält. Beispielsweise sollte das Hilfsprogramm sicherstellen, dass der ursprüngliche Sektor nicht geändert werden kann, wenn er an einen neuen Speicherort kopiert wird. Wenn Änderungen zulässig waren, kann das Defragmentierungsprogramm den Schreibzugriff verlieren.

Kritische Datenträgerdefragmentierer, die diese Transaktionsdatenfunktionen nicht bereitstellen, sollten nicht verwendet werden, es sei denn, die SQL Server-Instanz, die die zu defragmentierenden Datenträger verwendet, wurde heruntergefahren, sodass Sie geöffnete Datenbankdateien nicht defragmentieren.

Die Defragmentierung von Open-File löst mehrere mögliche Probleme aus, bei denen die Defragmentierung geschlossener Dateien in der Regel nicht funktioniert:

  • Die Defragmentierung von Open-File wirkt sich auf die Leistung aus. Defragmentierungsprogramme 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 sind und wie sich dies auf die Parallelität von SQL Server auswirken kann.

  • Die Defragmentierung von Open-File-Dateien kann sich auf das Zwischenspeichern und die Sortierung von Schreibvorgängen auswirken. Open-file-based utilities require I/O path components; Diese Komponenten dürfen die Sortierung oder beabsichtigte Art des Schreibvorgangs nicht ändern. Wenn die Schreib-Through- oder WAL-Protokollmandanten beschädigt sind, tritt wahrscheinlich ein Datenbankschaden auf. Die Datenbank und alle zugehörigen Dateien werden als eine einzige Entität betrachtet. (Dies wird in vielen Microsoft Knowledge Base-Artikeln, SQL Server-Bücher online und verschiedenen Whitepapers behandelt.) Alle Schreibvorgänge müssen die ursprünglichen Schreibreihenfolgen und Schreibvorgänge beibehalten.

Empfehlungen

  • Defragmentieren Sie das NTFS-Volume, es sei denn, es wurde formatiert, bevor Sie eine neue Datenbank erstellen oder vorhandene Datenbanken in das Volume verschieben.
  • Stellen Sie sicher, dass Sie ihre SQL-Daten und Protokolldateien bei der ersten Erstellung der Datenbank planen und anpassen.
  • Erstellen Sie Ihre Vor-SQL Server 2014-Transaktionsprotokolle mit Automatischer Vergrößerung, wenn sie verwendet werden soll.
  • Defragmentieren Sie den Datenträger oder datenträger, auf dem sich Die Transaktionsprotokolle befinden. Dies verhindert die Fragmentierung externer Dateien des Transaktionsprotokolls. Dieses Problem kann auftreten, wenn Ihre Dateien viel Autogrowth hatten oder wenn es sich nicht um einen dedizierten Datenträger handelt, der viele Datenbanken, Protokolle oder andere Geänderte Dateien enthält. In dieser Situation können Dateien (einschließlich der Transaktionsprotokolldatei) interleaviert und fragmentiert werden.
  • Wenn Sie Datenbanklaufwerke, die Clusterdatenträger sind, defragmentieren, 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 auch 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 aus, bevor Sie diese Speicherorte defragmentieren, die SQL Server-Datenbank- und Sicherungsdateien enthalten.

References