Diskeeper Can Boost Your SQL Server`s Performance

Werbung
Diskeeper steigert die Performance von SQL-Servern
Software-Spotlight von Brad M. McGehee
Einer der hinderlichsten Leistungsengpässe auf SQL-Servern kommt durch die E/A-Abfragen
auf den Festplatten zustande. Alles, was Datenbankadministratoren zur Reduzierung der
Belastung von SQL-Servern durch E/A-Abfragen tun können, trägt dementsprechend zu
einer Steigerung der Systemleistung bei. Datenbankadministratoren ergreifen folgende
Maßnahmen, um die durch E/A-Abfragen entstehenden Leistungsengpässe zu reduzieren:
•
•
•
•
Feineinstellen von Abfragen, um die Menge der zurückgegebenen Daten zu
reduzieren.
Verwenden schneller Festplatten und Arrays.
Einsetzen umfangreicher RAM-Speicher, um mehr Daten zwischenspeichern zu
können.
Häufiges Ausführen eines DBCC REINDEX-Prozesses, um die Fragmentierung der
logischen Datenbank zu beseitigen.
Eine weitere, weniger häufig verwendete, aber deshalb nicht weniger wichtige Methode zum
Reduzieren der E/A-Abfragen auf der Festplatte ist das Durchführen einer physikalischen
Defragmentierung der SQL Server-Programmdateien, Datenbankdateien,
Transaktionsprotokolle und Backupdateien. Die physikalische Fragmentierung von Dateien
hat zweierlei Ursachen. Zum einen werden die einzelnen Dateien in mehrere Abschnitte
aufgeteilt und über eine Festplatte oder einen Array verteilt abgelegt. Sie sind auf der
Festplatte also nicht mehr nebeneinander gespeichert. Zum anderen wird der freie
Festplattenspeicher auf der Festplatte oder dem Array in kleine, über die Festplatte
verstreute Bereiche aufgeteilt, bis immer weniger große, zusammenhängende
Speicherbereiche verfügbar sind. Infolge der Dateifragmentierung muss der Festplattenkopf
zum Abrufen der einzelnen Dateiabschnitte mehr Bewegungen ausführen, als das bei einer
zusammenhängenden Speicherung der Fall ist. Je höher die physikalische Fragmentierung
einer Datei, desto höher auch die Belastung des Festplattenlaufwerks, was schließlich zu
einem Absinken der E/A-Abfrageleistung führt. Durch die Fragmentierung des
Speicherplatzes verursacht auch das Schreiben von Daten auf die Festplatte schließlich
Probleme. Daten lassen sich schneller in nebeneinander liegenden als in über die Festplatte
oder einen Array verstreuten Speicherbereichen ablegen. Außerdem begünstigen viele leere
Speicherbereiche die Fragmentierung der physikalischen Datei.
Wenn Sie einen transaktionsintensiven SQL Server verwenden, der hauptsächlich INSERTS,
UPDATES und DELETES durchführt, hat die Fragmentierung der physikalischen Festplatte nur
geringe Auswirkungen, da nur wenige Datenseiten gelesen und wenige Daten geschrieben
werden. Wenn Sie jedoch zahlreiche SELECTS durchführen, wie das in der Regel beim
Scannen von Daten der Fall ist, dann beginnt sich die Fragmentierung der physikalischen
Dateien auf die Performance auszuwirken, da bei diesem Vorgang viele Daten gelesen
werden und der Festplattenkopf somit einer hohen Belastung ausgesetzt ist.
Sowohl Windows 2000 als auch Windows 2003 ist mit einem integrierten
Defragmentierprogramm ausgestattet. Dieses Programm ist allerdings langsam,
defragmentiert nicht immer besonders gründlich und enthält keine gute Planungsfunktion.
Aus diesem Grund habe ich mich entschlossen, es einmal mit Diskeeper 8.0 der Diskeeper
Corporation zu versuchen. Dieses Defragmentierprogramm steht in fünf verschiedenen
Versionen zur Verfügung:
•
•
•
•
•
Home
Professional
Administrator
Standard Server
Server Enterprise
Für diesen Artikel habe ich sowohl die Professional- als auch die Standard Server-Edition
getestet. Beide Editions sind sich einander ähnlich, unterscheiden sich jedoch, wie zu
erwarten, auf der Ebene der Funktionen. Die Professional Edition wurde für DesktopComputer und die Standard Server-Edition für Server entwickelt. In diesem Artikel möchte
ich die lediglich Funktionsweise von Diskeeper erklären. Es geht also nicht um das
Gegenüberstellen von Vor- und Nachteilen der Software.
Diskeeper in Aktion
Wer sehen möchte, was Diskeeper kann, der probiert das Tool am besten einfach aus. Und
genau das werde ich jetzt tun. Um die Funktionsweise von Diskeeper auf einem SQL-Server
zu testen, habe ich das Tool auf einem SQL-Server installiert, der seit ungefähr fünf Monaten
in Betrieb und noch nie zuvor defragmentiert worden war.
Diskeeper enthält ein Tool zum Analysieren des Fragmentierungsgrads vor und nach der
Defragmentierung. Das Ergebnis kann sehr aufschlussreich sein.
Ich habe Diskeeper also installiert und gestartet. Daraufhin erschien folgendes Fenster
(geändert, um auf die Webseite zu passen).
Als erstes wollte ich den Fragmentierungsgrad der Dateien auf dem Server ermitteln, vor
allem auf dem Laufwerk F, auf dem die MDFs, LDFs und Backup-Dateien der Datenbank
gespeichert waren. Darüber hinaus befanden sich auch die ausführbaren Dateien von SQL
Server auf dem Laufwerk F. Auf dem Laufwerk C war lediglich das Betriebssystem
gespeichert.
Ich habe zunächst einmal das Laufwerk F analysiert. Im Anschluss an diese Analyse
generiert Diskeeper mehrere Berichte, die im Folgenden abgebildet sind.
Wie Sie sehen, wurden bei der Analyse 244 fragmentierte Dateien und 1831 Fragmente
gefunden. Mit diesem Ergebnis gilt die Festplatte als besonders schwer fragmentiert und
Diskeeper empfiehlt das Durchführen einer Defragmentierung. Zusätzlich zu dieser
Zusammenfassung wird ein weiterer Bericht mit aufgeschlüsselten Zahlen generiert, der
nachstehend abgebildet ist.
Der Performance-Bericht ist nicht ganz so eindeutig wie der erste Bericht. Der Graph zeigt,
dass die E/A-Performance mit einer Defragmentierung nur um 1% verbessert werden kann.
Es wird eine sofortige Defragmentierung empfohlen, doch unter der Überschrift „Was
bedeuten die Zahlen?” steht, dass der aktuelle Fragmentierungsgrad die Gesamtleistung
noch nicht beeinträchtigt.
Der Zuverlässigkeitsbericht ist da eindeutiger. Die Zahlen zeigen, dass die Zuverlässigkeit
des Computers durch den aktuellen Fragmentierungsgrad stark beeinträchtigt ist und die
Festplatten defragmentiert werden müssen. Der hohe Fragmentierungsgrad kann die
einwandfreie Funktionsweise des Betriebssystems beeinträchtigt, so dass Fehler u. U. das
Aufhängen von Programmen und das Abstürzen des Systems zur Folge haben, wenn sie
nicht behoben werden.
Der Fragmentierungsbericht enthält eine Menge interessanter Daten, mit denen die
Empfehlung zugunsten einer Defragmentierung weiter untermauert wird.
Visuell besonders interessant ist der Bericht über die Laufwerksfragmentierung, da er die
Verteilung der Dateifragmente über die Festplatte aufzeigt. Blau kennzeichnet nicht
fragmentierte Dateien und Rot die fragmentierten Dateien. Grün sind die Dateien, die nicht
verschoben werden können, wie einige Systemdateien.
Der Empfehlung von Diskeeper folgend habe ich diese Option manuell ausgewählt und auf
den Abschluss der Defragmentierung gewartet. Anschließend sahen meine Laufwerke so aus.
Wie Sie sehen, hat Diskeeper die Fragmentierung dieser Festplatte nahezu beseitigt. Ich
möchte nicht auf alle Berichte einzeln eingehen, kann Ihnen aber versichern, dass sie alle
eine 100 %-ige Defragmentierung der Festplatte aufzeigen. Damit war die
Dateifragmentierung beseitigt und konnte die Leistung des SQL-Servers nicht mehr
beeinträchtigen.
Was jetzt?
Hatten wir die Lage mit der Defragmentierung der Festplatte wieder fest im Griff? Nein. Die
Fragmentierung baut sich immer wieder auf. Obwohl das NTFS-Dateisystem versucht, den
Fragmentierungsgrad so niedrig wie möglich zu hatten, ist das Ergebnis nicht unbedingt
zufriedenstellend. Wenn die optimale E/A-Leistung aufrechterhalten werden soll, muss die
Defragmentierung also kontinuierlich durchgeführt werden. Dazu stellt Ihnen Diskeeper eine
bedarfsorientierte Planung zur Verfügung. Von den verschiedenen Optionen, die zur Wahl
stehen, zeichnet sich die Option „Set it and Forget It” durch ihre hohe Benutzerfreundlichkeit
aus. Wenn Sie diese Option aktivieren, führt Diskeeper bei einer geringstmöglichen
Belastung der Systemressourcen automatisch eine kontinuierliche Defragmentierung Ihres
Systems durch. Diese Einstellung sollte bei den meisten SQL Servern gut funktionieren,
sofern sie nicht schon überlastet sind. Wenn der SQL-Server einer besonders hohen
Belastung ausgesetzt ist, sollten Sie die Defragmentierung manuell für Zeiträume planen, in
denen die Ressourcen weniger beansprucht werden.
Kann Diskeeper Open SQL Server MDF- und LDF-Dateien defragmentieren?
Bei der Festplattendefragmentierung gilt die Defragmentierung von genutzten Dateien als
besonders bedenklich. Mit anderen Worten stellt sich die Frage, ob Diskeeper oder ein
anderes Defragmentierprogramm auch die Dateien defragmentieren kann, auf die gerade
zugegriffen wird?
Die Diskeeper Corporation hat auf diese Frage Folgendes geantwortet: „Diskeeper
defragmentiert die Festplatte auf der Ebene des Betriebssystems und verwendet dazu die
Windows MoveFile-APIs.” Das bedeutet, das Diskeeper eine Festplatte auf der Ebene des
Betriebssystems defragmentieren kann, ohne dass es dabei eine Rolle spielt, ob ein SQLoder Exchange-Server ausgeführt wird.
Da meinen Tests noch der endgültige Beweis fehlte, habe ich obiges Experiment
durchgeführt. Die SQL Server MDF- und LDF-Dateien waren in der Tat defragmentiert
worden, obwohl sie zum Zeitpunkt des Vorgangs geöffnet waren.
Stellen Sie Diskeeper auf die Probe
Glücklicherweise können Sie jede beliebige Diskeeper-Edition kostenlos testen. Das ist der
beste Weg, um herauszufinden, ob das Tool Ihren Anforderungen entspricht.
Über den Verfasser: Brad M. McGehee ist ein vollzeitbeschäftigter Datenbankadministrator in einer
großen Produktionsgesellschaft und Herausgeber von www.SQL-Server-Performance.Com, einer auf das
Tuning und Clustering der SQL-Server-Performance spezialisierten Website. Er ist ein MVP, MCSE+I,
MCSD und ehemaliger MCT.
Neudruck mit der Genehmigung von SQL-Server-Performance.Com © 2000 - 2005 SQL-Server-Performance.Com Alle
Rechte vorbehalten. Diskeeper Corporation und Diskeeper sind eingetragene Warenzeichen oder Warenzeichen Diskeeper
Corporation, Inc. Alle anderen Warenzeichen sind Eigentum ihrer jeweiligen Inhaber.
Herunterladen