Die Datendateien unserer Produktions-SQL Server 2005-Datenbank befinden sich auf einem separaten physischen Laufwerk, das vom Microsoft Windows 2003-Tool zum Defragmentieren als zu 99% fragmentiert gemeldet wird.
Wir haben eine Aufgabe geplant, um diese Fahrt an einem Samstagmorgen um 3:00 Uhr morgens zu defragmentieren. Der Auftrag wurde nach 40 Minuten ohne erkennbare Fehler abgeschlossen. Das Laufwerk bleibt jedoch stark fragmentiert.
Sollten wir SQL Server-Dienste vor der Defragmentierung gestoppt haben?
KONTEXT
Pro Kontextanforderungen: Wir haben eine Microsoft SQL Server 2005-Instanz (9.00.5324.00), auf der 32-Bit-Windows Server 2003 (SP2) auf Dell PowerEdge 2950-Hardware (ca. 2007) mit 4 GB RAM ausgeführt wird. Das PowerEdge 2950 verfügt über vier 68-GB-Laufwerke, die als RAID-1 konfiguriert sind, um zwei virtuelle 68-GB-Festplatten zu erstellen: (1) C (Start und Betriebssystem) & D (Auslagerungsdatei, verschiedene andere Daten); und (2) E (SQL-Daten). Meines Wissens haben IT-Mitarbeiter keines dieser Laufwerke defragmentiert ... Disk Defragmenter meldet eine Dateifragmentierung von 66% (C), 77% (D) und 99% (E). Der Leistungsmonitor meldet die folgenden durchschnittlichen Ergebnisse: "Auslagerungsdatei:% Auslastung" = ~ 6,8% ; "SQL Server: Buffer Manager - Seitenlebenserwartung" = 20 Sekunden ; und "PhysicalDisk: Avg. Disk sec / write, Laufwerk E" = zwischen 300 und 1,. Wir werden in ein paar Monaten ein dringend benötigtes Hardware- und SQL Server-Upgrade durchführen müssen (nämlich neue Hardware, 64-Bit-Windows Server 2012, 64-Bit-SQL Server 2012, 12 GB RAM), aber aufgrund von End- Benutzerleistung, möchten das Problem so weit wie möglich lindern. Daher könnte das Denken einer Dateidefragmentierung für Laufwerk E, das Haupt-SQL-Datenlaufwerk, hilfreich sein.
Abgesehen davon haben wir letzte Woche zwei ausgefallene Laufwerke gezogen und das Array neu aufgebaut ... nicht sicher, ob das wichtig ist. Wir arbeiten mit einem anderen IT-Team zusammen, um den Server zu warten, sodass wir keinen direkten Zugriff auf die Geräte haben. Unsere Organisation zahlt nur für die Dienstleistungen.
Wir können uns die Ausfallzeit bei regelmäßig geplanten Wartungsfenstern (wöchentlich) sowie bei Bedarf über Nacht Ausfallzeiten außerhalb des Bandes leisten.
quelle
SELECT *
überall durchgeführt werden, oder auf andere Fehlverhalten.Antworten:
Ich persönlich habe Raxco PerfectDisk (in keiner Weise mit dem Unternehmen oder einem seiner Mitarbeiter verbunden) verwendet, um Online-Defragmentierungen von SQL Server-LUNs durchzuführen. Funktioniert einwandfrei, wenn der Server dadurch etwas langsamer wird. Ich würde empfehlen, dies in Zeiten geringerer Aktivität zu tun. Wenn ich "funktioniert einwandfrei" sage, beziehe ich mich darauf, dass das Volume oder die SQL-Datendateien nicht beschädigt werden.
Der eingebaute Defragmentierer leistet sehr schlechte Arbeit, wenn bestimmte Strukturen auf dem Laufwerk fragmentiert sind. PerfectDisk zeigt Ihnen Details zu allen fragmentierten Elementen, einschließlich der NTFS-Zuordnungstabellen, Verzeichnisse, alternativen Dateistreams usw. usw.
Defragmentiert PerfectDisk SQL-Datenbanken? http://support.raxco.com/KB/a106/does-perfectdisk-defragment-sql-databases.aspx
Informationen zu SQL Server und zur Fragmentierung finden Sie in dieser Archivkopie des Technet News Magazine: http://web.archive.org/web/20100803204458/http://www.microsoft.com/technet/abouttn/flash/tips/tips_083104.mspx
quelle
Ihr Problem ist nicht die Festplattenfragmentierung. Ihr Problem sind RAM- und Anwendungstabellen-Scans:
Sie benötigen viel mehr RAM. Wie in Ihrem neuen Server sollte viel, viel, viel, viel mehr als 12 GB haben. Beginnen Sie mit 64 GB, es kostet im Grunde Groschen . Und ja, korrigieren Sie Ihre App, um Indizes zu verwenden. 20 Sekunden sind ein sehr klarer Hinweis auf Tabellenscans, die den Pufferpool in den Papierkorb werfen. Sie müssen die App reparieren, die erforderlichen Indizes hinzufügen und Ihre Abfragen korrigieren . Für Ihren Fall ist die Defragmentierung der Laufwerke genauso ein roter Hering wie rote Heringe.
Oh, und bitte verschieben Sie das Protokoll, um physische Spindeln von Daten zu trennen . Allein.
quelle
Brad McGehee beschreibt es hier gut:
http://www.bradmcgehee.com/2011/06/do-you-ever-physically-defragment-your-sql-server-mdf-ldf-files/
... wenn Sie den SQL Server-Dienst während Ihrer Defragmentierung laufen lassen, sind die Datenbankdateien geöffnet und daher überhaupt nicht defragmentiert.
quelle