SQL Server: Database Tuning Advisor

SQL Server: Database Tuning Advisor

Ratgeber zur Datenbankoptimierung GUI (Graphical User Interface)
für Microsoft SQL Server 2005 und 2008

Einleitung

Um Microsoft SQL Server Datenbanken zu optimieren, sollte eines der wichtigsten Tools nicht übersehen werden, denn es vereint Jahrzehnte lange Datenbankerfahrung, Entwicklung und einfache Bedienbarkeit, gepaart mit hoher Effizienz.

Gemeint ist der Database Tuning Advisor beziehungsweise der Datenbankoptimierungsratgeber kurz DTA der mit Microsoft SQL Server geliefert wird.

Die Aufgabe des DTA ist es, Arbeitsauslastungsdateien oder T-SQL Scripts  (Arbeitsauslastungsdateien können mit dem – ebenfalls zum SQL Server gehörenden – SQL Profiler aufgezeichnet werden) auszuwerten und letztendlich Empfehlungen zu generieren. Diese Empfehlungen sind nichts anderes als generierte SQL Anweisungen die Indizes, Statistiken, partitionierte Tabellen und indizierte Views anlegen, mit dem Ziel die mit der Arbeitsauslastungsdatei oder Transact SQL Script übergebenen SQL Abfragen/Anweisungen zu beschleunigen.

Beispiel für durch den DTA generierte Empfehlungen:

CREATE STATISTICS [_dta_stat_1258591672_3_5_1] 
ON [dbo].[KONTAKTE]([ID], [MANDANT], [BERUF])
 go
CREATE NONCLUSTERED INDEX [_dta_index_DETAILS_5_1290591786__K1_K5_K9_K8_K3_K4_K2_7] 
ON [dbo].[DETAILS]
 (
 [ACTIDENT] ASC,
 [MANDANT] ASC,
 [POSITION] ASC,
 [AKTION] ASC,
 [AUSBILDUNG] ASC
 )
INCLUDE ( [GUELTBIS]) 
WITH (SORT_IN_TEMPDB = OFF, 
      IGNORE_DUP_KEY = OFF, 
      DROP_EXISTING = OFF, 
      ONLINE = OFF) 
ON [PRIMARY]
 go
CREATE STATISTICS [_dta_stat_1290591786_8_9] 
ON [dbo].[DETAILS]([POSITION], [AUSBILDUNG])
 go

Es kann gesteuert werden, welche Art von Empfehlungen generiert werden sollen und welche nicht. Dieses Verhalten ist über die Registerkarte -Optionen- des DTA steuerbar, so das dem DTA gesagt werden kann, das er zum Beispiel keine Empfehlungen auf der Basis von Partitionen oder keine gruppierten Indizes vorschlagen soll.

In der Microsoft Online Dokumentation finden Sie folgenden schönen Satz:

Die Optimierung von Datenbanken mithilfe des Datenbankoptimierungsratgebers erfordert keine Erfahrung mit Datenbankstrukturen, Arbeitsauslastungen oder den internen Arbeitsfunktionen von SQL Server.

Es ist richtig, dass der DTA auch seine Empfehlungen generiert, wenn Sie keine Ahnung haben, was da eigentlich gemacht wird, jedoch sollte eindeutig ein entsprechendes Basiswissen über gruppierte oder nicht gruppierte Indizes, Views und Partitionierung, sowie das Erstellen von Arbeitsauslastungsdateien vorhanden sein.

Probleme tauchen zum Beispiel auf, wenn die dem DTA übergebene Arbeitsauslastungsdatei falsch erstellt wurde und einfach nicht die entsprechenden, für die Optimierung wichtigen Informationen enthält. Das kann schon daran liegen, dass die Arbeitsauslastung zur falschen Zeit erstellt wurde und nicht die relevanten Daten enthält.

Ein Beispiel: Was wenn Ihnen die Buchhaltung mitteilt, dass die Erstellung der Buchhaltungsberichte am Nachmittag unverhältnismäßig viel Zeit in Anspruch nimmt, Sie die Arbeitsauslastungsdatei aber am Vormittag erstellen lassen wenn die Buchhaltung keine Berichte erstellt?

In der Arbeitsauslastungsdatei werden die problematischen Abfragen, die am Nachmittag durch die Berichte erzeugt werden nicht enthalten sein und demnach wird der DTA diese auch nicht optimieren können.

Da in den Empfehlungen des DTA auch der Vorschlag des Löschens von ineffektiven Indizes, etc. vorhanden sein kann, können unter anderem Folgeprobleme durch das Löschen von Indizes auftreten, die unter Umständen doch benötigt werden.

Damit sind wir auch schon bei einem wichtigen Punkt, wie die Arbeitsweise des DTA zu sehen ist.

Der DTA analysiert eine Datenbank nicht indem er den Namen der Datenbank mitgeteilt bekommt und dann anhand der dort zu findenden Datenbankobjekte wie Tabellen, Trigger, Stored Procedures, Views oder Daten „überlegt“, was hier wohl am sinnvollsten wäre.

Der DTA nutzt als Basis seiner Optimierungsanalysen und letztendlich seiner Empfehlungen immer Ablaufverfolgungsdateien, Ablaufverfolgungstabellen oder Transact-SQL-Skripts für die eigene Analyse der zu optimierenden Datenbank und letztendlich für die Generierung der Empfehlungen.

Ohne die Kenntnis über reale SQL Befehle, die auf der zu optimierenden Datenbank ausgeführt werden, findet auch keine Optimierung statt!

Beschreibung Vorgehensweise

Im nächsten Schritt möchte ich Sie durch die einzelnen Phasen des Optimierungsprozesses führen und die einzelnen Schritte ausführlich erläutern. Es wird in diesem Abschnitt nicht auf jede im Datenbankoptimierungsratgeber enthaltene Option eingegangen, sondern vielmehr ein nach meinen Erfahrungen und Einschätzungen in der Praxis häufig vorkommender Ablauf erläutert.

Es wird desweiteren davon ausgegangen, dass eine entsprechende Arbeitsauslastungsdatei bereits vorhanden ist.

  • Arbeitsauslastungsdatei

Arbeitsaulastungsdateien können mit dem SQL Profiler erstellt werden. Sie starten den SQL Profiler über das Menü Start > MS SQL Server 200x > Leistungstools > SQL Server-Profiler.

Unter dem Menüpunkt -Neue Ablaufverfolgung- starten Sie die Erstellung einer neuen Ablaufverfolgungsdatei. Anschließend werden Sie aufgefordert, die Instanz (dort wo Ihre zu optimierende Datenbank liegt) auszuwählen, für die die Ablaufverfolgung erstellt werden soll und sich mit dieser zu verbinden. Wählen Sie unter dem Punkt -Vorlage verwenden- die Vorlage -Tuning- aus und starten die Ablaufverfolgung. Um die Ablaufverfolgung später wieder zu beenden, klicken Sie auf -Ausgewählte Ablaufverfolgung beenden-.

Wichtig: Beim Ausführen der Ablaufverfolgung wird eine nicht zu unterschätzende Systemlast erzeugt. Es werden zum Teil erhebliche Datenmengen produziert. Die Performance der Datenbankanwendung verschlechtert sich in diesem Fall zusätzlich. Demnach sollten Sie den Profiler nie auf der gleichen Maschine laufen lassen, auf der auch der SQL Server läuft, sondern den Profiler immer auf einem separaten Rechner ausführen. Dies ist übrigens auch eine Prüfungsfrage für die Microsoft Zertifizierung 70-431 MCTS Microsoft Certified Technologie Specialist. SQL Server 2008 schafft zusätzlich die Möglichkeit, den Performance Data Collector bei vergleichsweise geringer CPU Last zu nutzen.  Weiter möchte ich darauf hier nicht eingehen und empfehle jedem, sich mit der Thematik zu beschäftigen.

Weitere Informationen finden Sie hier http://technet.microsoft.com/de-de/library/ms181091.aspx.

Das Ergebnis der Ablaufverfolgung sollten eine oder mehrere .trc Dateien sein, die die Ablaufverfolgunsdaten enthalten und dem DTA übergeben werden müssen.

Wir starten jetzt den DTA. Hierzu wird der DTA unter Start > MS SQL Server 200x > Leistungstools aktiviert. Übrigens können Sie den DTA auch direkt aus dem SQL Management Studio über den Menüpunkt -Extras- aufrufen.

Hinweis: Den DTA können Sie auch über die Kommandozeile mittels dta.exe starten und es stehen Ihnen zusätzliche Optionen zur Verfügung (z.B. Testserver definieren oder Anzahl der zu analysierenden Auslastungselemente bestimmen). In diesem Artikel nutzen wir die grafische Benutzeroberfläche, die zwar weniger Optionen als die Kommandozeilenversion zulässt aber auch eine professionelle und komfortablere Optimierung erlaubt.

Nach dem Start befindet man sich automatisch im Register -Allgemein- der Benutzeroberfläche.

Hinweis: Das Verhalten nach dem Start kann im Menü Extras > Optionen festgelegt werden. Somit ist es möglich, das nicht – wie im Artikel beschrieben, mit dem Anlegen einer neuen Optimierungssession (Standardeinstellung) begonnen wird.

  • Registerkarte -Allgemein-

Im linken Bereich -Sitzungsmonitor- sehen Sie Ihre aktuellen Sessions, beziehungweise Optimierungssitzungen. Hier werden alle durchgeführten Optimierungssitzungen gespeichert und es können ältere Optimierungsergebnisse bei Bedarf durch Klick darauf wieder angezeigt werden oder Einstellungen von vorherigen Sitzungen durch klonen (kopieren) der Sitzung übernommen werden.

Der DTA legt beim Start automatisch eine neue Sitzung an (Standardeinstellung)  und vergibt einen entsprechenden Sitzungsnamen, der in der Regel aus dem DB Benutzer, dem Datum und der Uhrzeit besteht. Sie können diesen Sitzungsnamen natürlich entsprechend anpassen, damit Sie bei mehreren Optimierungen die Sitzungen auseinanderhalten können und nicht durcheinander kommen.

Rechts -Registerkarte Allgemein- sehen Sie die zugewiesenen oder zuzuweisenden Parameterdetails der ausgewählten oder neu angelegten Optimierungssitzung.

Hier wählen Sie die Arbeitsauslastungsdatei, sowie die zu optimierende Datenbank und die zugehörigen Tabellen aus, die der DTA für seine Analyse benötigt.

Im Bereich -Arbeitsauslastung- wird unterschieden, ob die Arbeitsauslastungsdaten in Form von Dateien oder als SQL Server Datenbanktabelle vorliegen. Es ist möglich, den SQL Profiler (Tool zum aufzeichnen der Arbeitsauslastungsdaten – siehe oben)  bei Erstellung der Ablaufverfolgung anzuweisen, die ermittelten Daten direkt in eine Datenbanktabelle einer SQL Server Datenbank schreiben zu lassen.

Je nachdem, wie Ihnen die Auslastungsdaten vorliegen (als Dateien mit der Extension .trc  oder DB Tabelle), wählen Sie im Bereich -Arbeitsauslastung- die entsprechende Option.

Wählen Sie demnach für .trc Dateien die Option -Datei- und öffnen Sie durch Klick auf die Schaltfläche mit dem Fernglassymbol den Dateiauswahldialog, um die Auslastungsdatei zu laden. Sollten Sie die Daten in Form einer Datenbanktabelle vorliegen haben, so wählen Sie die Option -Tabelle- und klicken ebenfalls auf die Fernglasschaltfläche.

In diesem Fall müssen Sie die entsprechenden Verbindungsdaten zur Datenbank angeben und die entsprechende Tabelle auswählen, die die Arbeitsauslastungsdaten enthält.

Wie auch immer, letztendlich ist das Ziel der gerade beschriebenen Vorgehensweise, dem DTA lediglich zu sagen, wo er die Daten zur Arbeitsauslastung findet.

Jetzt müssen noch die verschiedenen Optionen festgelegt werden, die die Generierung der Empfehlungen steuern. Damit legen wir fest, was in den Empfehlungen vorgeschlagen werden darf und was nicht. Wichtige Einstellungen, denn es macht keinen Sinn sich vom DTA  z.B. gruppierte Indizes oder indizierte Views vorschlagen zu lassen, wenn man diese – aus welchen Gründen auch immer – nicht einsetzen möchte oder kann, da diese nicht verändert werden dürfen.

Wechseln Sie jetzt auf die Registerkarte -Optimierungsoptionen-.

  • Registerkarte -Optimierungsoptionen-

Unter -Optimierungszeit begrenzen- geben Sie an, wie lange die Optimierungsanalyse dauern soll.

Hier empfehle ich im ersten Anlauf, auf jeden Fall den Standardwert von 1 Stunde beizubehalten und – sollte er nicht aktiviert sein, diesen zu aktivieren.

Je nachdem, wie groß/ umfangreich die Arbeitsauslastungsdateien sind, kann der ganze Analysevorgang sehr lange dauern. Die Begrenzung ermöglicht auch, überhaupt einschätzen zu können, ob überhaupt sinnvolle Empfehlungen generiert werden. Sollte dies der Fall sein, so kann man natürlich durchaus die Begrenzung erhöhen oder sogar ganz entfernen. Jedoch sollte man sich in diesem Fall auf eine längere Wartezeit einstellen. Zumindest bei umfangreichen, großen Arbeitsauslastungen mit großen Datenbanken.

Ich persönlich setze immer eine zeitliche Begrenzung, da ich nicht im ungewissen bleiben möchte, ob der DTA jetzt 3 Stunden oder 3 Tage für seine Analyse benötigt. Es kann übrigens ratsam sein, eine kleinere Zeitbegrenzung (20 min) einzustellen, um zu sehen, ob überhaupt etwas empfohlen wird und der DTA etwas mit den Arbeitsauslastungsdaten anfangen kann. Es ist nämlich nicht schön, an einem Arbeitstag nach Stunden der Erwartung 0 Empfehlungen und ein dickes mit Fehlern gefülltes Optimierungsprotokoll (Erläuterung zum Optimierungsprotokoll folgt) zu erhalten, nur weil der DTA mit der Arbeitsauslastung nichts anfangen konnte oder einen Großteil selbiger ignoriert hat. Im Prinzip ist es ein Art Antesten der übergebenen Parameter.

Hinweis: Über die Kommandozeilenversion des DTA können Sie auch die Anzahl der Ereignisse in der Auslastungsdatei, die ausgewertet sollen, mit dem –n Argument begrenzen.

Unterhalb der Option -Optimierungszeit begrenzen-  folgen 3 Bereiche, in denen festgelegt werden kann, was in den Empfehlungen enthalten sein darf und was nicht, ob Strukturen verändert werden dürfen beziehungweise beibehalten werden müssen, usw..

Nachfolgend eine kleine Auflistung mit Beschreibung was sich hinter den Optionen in den einzelnen Abschnitten verbirgt.

Physische Entwurfsstrukturen, die in der Datenbank verwendet werden sollen:
Option Erklärung
Indizes und indizierte Sichten Es werden gruppierte Indizes, nicht gruppierte Indizes und indizierte Sichten hinzugefügt.
Indizes Es werden nur Indizes hinzugefügt.
Indizierte Sichten Ausschließlich indizierte Sichten werden hinzugefügt.
Nicht gruppierte Indizes Es werden ausschließlich nicht gruppierte Indizes hinzugefügt.
Gefilterte Indizes einschließen (nur SQL Server 2008)
Nur Auslastung vorhandener physischer Entwurfsstrukturen bewerten Bei dieser Option werden nie neue Strukturen vorgeschlagen sondern es werden nur die vorhandenen physischen Entwurfsstrukturen bewertet. Neue Strukturen werden dabei nicht hinzugefügt.
Zu verwendende Partitionierungsstrategie:
Option Erklärung
Keine Partitionierung In den generierten Empfehlungen wird Partitionierung NICHT verwendet.
Vollständige Partitionierung In den generierten Empfehlungen wird Partitionierung verwendet.
Ausgerichtete Partitionierung Es werden nur Partitionen empfohlen, die an vorhandenen Partitionen der zugrunde liegenden Tabellen oder Sichten ausgerichtet sind. (Die Auswahl dieser Option führt zu einer verbesserten Verwaltbarkeit.)
Physische Entwurfstrukturen, die in der Datenbank beibehalten werden sollen:
Option Erklärung
Keine vorhandenen physikalischen Alle vorhandenen physischen Entwurfsstrukturen werden gelöscht.In Verbindung mit der Option Nur Auslastung vorhandener physischer Entwurfsstrukturen bewerten werden nur die aktuellen physischen Entwurfsstrukturen bewertet, um festzulegen, ob sie gelöscht werden können. Nur -Löschen- Modus.
Alle vorhandenen physikalischen Es werden alle vorhandenen Strukturen beibehalten. Es wird nichts gelöscht.
Ausgerichtete Partitionierung beibehalten
Nur Indizes beibehalten Es werden nur Indizes beibehalten alle anderen Strukturen werden gelöscht
Nur gruppierte Indizes beibehalten

Nachdem Sie diese Einstellungen getroffen haben, kann die Analyse gestartet werden. Klicken Sie jetzt in der oberen Symbolleiste auf -Analyse starten-. Der DTA beginnt jetzt, anhand der von Ihnen vorgegebenen Parameter, mit seiner Analyse.

  • Registerkarte –Status-

Nach dem Start der Analyse wird eine weitere Registerkarte mit Namen -Status- eingeblendet und auf diese gewechselt. Wie der Name schon sagt, wird hier der aktuelle Status/ Fortschritt der Analyse angezeigt.

Mann sieht jetzt verschiedene Phasen, die der DTA im Zuge der Analyse abarbeitet. Die letzte dieser Phasen lautet -Empfehlungen werden generiert-, denn darum geht es ja bei der ganzen Sache.

Erläuterung der einzelnen Phasen/Aktionen, die Ihnen auf der Registerkarte -Status- angezeigt werden:
Option Erklärung
Konfigurationsinformationen werden  abgesendet Übertragen der Konfigurationsoptionen.
Arbeitsauslastung wird gelesen In dieser Phase wird die an den DTA übergebene Arbeitsauslastungsdatei analysiert. Sollte es hier Probleme geben z.B. falsche Auslastungsdatei so wird ein Fehler mit einer entsprechenden Nachricht generiert und die Analyse wird abgebrochen. Ein mögliches Problem kann z.B. sein, dass die falsche Datenbank ausgewählt wurde und die Daten demnach nicht konform mit der zu optimierenden Datenbank sind. Dies wird auch im unteren Optimierungsprotokoll angezeigt.
Analyse wird durchgeführt Hier findet die Analyse statt und es wird sogar während der Analyse  die zum aktuellen Zeitpunkt geschätzte Verbesserung angezeigt.
Berichte werden generiert Hier werden die Berichte generiert die anschließend nach Abschluss der Analyse generiert werden und über die Registerkarte -Berichte- (wird erst nach Abschluss eingeblendet) angesehen werden können.
Empfehlungen werden generiert Anzeige des Status Empfehlungen werden generiert.

Weiter unten auf der Maske sehen Sie das sogenannte -Optimierungsprotokoll-.

Das Optimierungsprotokoll sollten Sie sich stets ansehen, denn hier werden Ereignisse der Arbeitsauslastung protokolliert, die nicht optimiert werden können. Diese Fehler und Meldungen werden in das Optimierungsprotokoll geschrieben. Ein wichtiger Indikator um zu sehen, ob es Probleme mit der Auslastungsdatei, etc. gibt.

Beschreibung der einzelnen Spalten der Tabelle des Optimierungsprotokolls:
Option Erklärung
CategoryID Ordnet dem Ereignis eine dreistellige ID mit vorangestelltem Präfix zu. Diese ID wird allen  Instanzen des zugehörigen Fehlers zugewiesen und ermöglicht so ein durchsuchen der Optimierungsprotokolltabelle nach zugehörigen Einträgen zum Fehler.Das vorangestellte Prafixzeichen untergliedert die Datensätze in folgende Kategorien:- S: Fehler (Anweisung oder Arbeitsauslastung)
– C: Fehler mit Einschränkung verbunden
– E: mit Server verbundener Fehler
Ereignis Entspricht einem entsprechenden zugeordnetem Ereignis das aufgetreten ist bzw. auf das sich bezogen wird. Kann ein Batch, Gespeicherte Prozedur etc. sein. Spalte kann aber auch leer sein, da es auch Meldungen gibt die keinem Ereignis zugeordnet werden können.
Häufigkeit Wie oft kommt der Datensatz vor.
Ursache Ursache warum die Anweisung nicht optimiert werden konnte. Diese Meldung berücksichtigt Meldungen des DTA, SQL Servers und auch Meldungen von ODBC Treibern etc.

Weitere Informationen zu den generierten Meldungen des Optimierungsprotokolls finden Sie unter
http://technet.microsoft.com/de-de/library/ms175881.aspx.

Nachdem der DTA mit seiner Analyse fertig ist und diese durchlaufen wurde, werden zwei weitere Registerkarten eingeblendet: -Empfehlungen- und -Berichte-.

  • Registerkarte -Empfehlungen-

Wie der Name schon zur Vermutung Anlass gibt, werden auf dieser Registerkarte die Ergebnisse der Analyse dargestellt. Wenn diese Registerkarte eingeblendet wird, ist die DTA Analyse beendet und die Empfehlungen wurden erstellt (oder auch nicht wenn es nichts zu Optimieren gab). Es wird automatisch auf diese Registerkarte gewechselt.

Ein sehr interessanter Punkt ist die Anzeige -Geschätzte Verbesserung-. Hier wird, wie die Bezeichnung schon sagt, geschätzt was die generierten Empfehlungen – sollten diese letztendlich angewendet werden, für einen Performancegewinn bringen. Die geschätzte Verbesserung wird in Prozent angegeben.

Darunter findet man dann die Darstellungen der generierten, vorgeschlagenen Empfehlungen in Form einer Tabelle, kategorisiert nach Empfehlungsart.

Es werden Datenbankname, Objektname (hiermit ist das Datenbankobjekt gemeint für das die Empfehlung generiert wurde), Empfehlungsziel, Details, Partitionierungsschema, Größe (KB), Definition angezeigt.

Um sich einzelne Empfehlungen anzusehen, scrollen Sie horizontal bis die Tabellenspalte Definition zu sehen ist und klicken Sie auf den Link. Es öffnet sich jetzt ein Fenster das den SQL Befehl anzeigt der die  der Optimierung umsetzt.

Die Empfehlungen wurden generiert. Wie geht’s es jetzt weiter?

Sie haben jetzt im Prinzip zwei Möglichkeiten:

  1. Sie könnten die Empfehlungen direkt anwenden, indem Sie im Menü -Aktionen- den Menüpunkt -Empfehlungen anwenden- auswählen und den Zeitpunkt (sofort oder zu einem späteren Zeitpunkt) festlegen, zu dem die generierten Empfehlungen angewendet werden.
  2. Sie könnten – und das empfehle ich Ihnen sehr, die Empfehlungen vor Anwendung analysieren und nachbearbeiten.

Warum? Die vom DTA generierten Empfehlungen sind sehr hochwertig, es ist jedoch keine gute Idee, jeden vorgeschlagenen Index oder jede Partitionierung sofort in der Datenbank zu realisieren.

Je nachdem welche Daten dem DTA in der Auslastungsdatei übergeben werden, kann es passieren das zum Beispiel Indizes für alle möglichen Variationen empfohlen werden, obwohl diese aus optimierungstechnischen Gründen nicht unbedingt notwendig sind. Damit meine ich nicht, dass die Indexempfehlungen des DTA falsch sind, sondern es kann vielmehr sein, dass Sie diese nicht unbedingt anwenden brauchen, um Ihr Optimierungsproblem zu lösen. Kurz und gut, die Datenbank ist unter Umständen auch ohne einige erstellte Indizes schnell.  Der DTA meint es quasi zu gut, beziehungsweise schlägt natürlich auf Grundlage der Auslastungsdatei dort Verbesserungen vor, wo er die Möglichkeiten der Verbesserung sieht.

Ob Sie allerdings für eine Tabelle nur 5  oder 50 Indizes angelegt haben ist ein Unterschied. Beim Eingeben oder Ändern von Daten in diese Tabelle müssen immer auch die betreffenden Indizes aktualisiert werden und auch das kostet Zeit. Es könnte Ihnen also passieren, dass Sie zwar durch die Anlage von allen vorgeschlagenen beziehungseise vielen Indizes die Geschwindigkeit der Abfragen verbessern, dafür aber Datenaktualisierungen verlangsamen.

Hier ist also Vorsicht geboten und es sollte genau eingeschätzt werden können, welche Empfehlungen wie notwendig sind und was sie bewirken.

Hier kommt aber der Mensch mit seinem Fachwissen und seiner Fähigkeit Zusammenhänge zu erkennen ins Spiel, indem er generierte Empfehlungen bezüglich Notwendigkeit einer nochmaligen Qualitätsprüfung unterziehen sollte.

Sie haben die Möglichkeit, sich die generierten Empfehlungen in Form einer SQL Datei ausgeben zu lassen. Diese SQL Datei können Sie im SQL Server Management Studio und anderen Texteditoren bearbeiten.

Es könnte ja sein, dass Sie bestimmte Empfehlungen entfernen wollen oder die vergebenen Namen entsprechend ändern möchten. Der DTA vergibt nämlich teilweise sehr lange und meiner Meinung nach unschöne Namen die ich meistens in sinnvollere Bezeichnungen abändere.

Wie werden Empfehlungen abgespeichert?

Unter Menü -Aktionen- den Menüpunkt -Empfehlungen speichern- auswählen und es erscheint ein -Datei speichern- Dialog mit dem die Empfehlungsdatei in Form einer SQL Datei abgespeichert werden kann.

Wenn Sie mit den generierten oder nachbearbeiteten Empfehlungen in Form einer T-SQL Skriptdatei letztendlich zufrieden sind, können Sie diese normal, wie jedes T-SQL Script an Ihrer zu optimierenden Datenbank anwenden.

  • Registerkarte -Berichte-

Mit Abschluss der Optimierungsanalyse des DTA wird neben der Registerkarte -Empfehlungen- ebenfalls eine Registerkarte -Berichte- eingeblendet. Hier werden einige sehr nützliche Berichte bezüglich der zu erwartenden Verbesserungen und auch Daten dargestellt, die auf der Grundlage der ausgewerteten Arbeitsauslastungsdaten beruhen. Die Berichte können als XML oder Textdaten abgespeichert werden.

Eine Übersicht über die einzelnen Berichte und deren Bedeutung finden Sie hier:
http://technet.microsoft.com/de-de/library/ms189106.aspx

Fragen und Antworten

  • Wenn ich unter Optionen die Optimierungszeit begrenze, arbeitet der DTA dann schneller?

Der DTA arbeitet nicht schneller, sondern arbeitet die übergebene Arbeitsauslastungsdatei nur bis zu dem Punkt ab, bis es an der Zeit ist abzubrechen, um die Begrenzung der Optimierungszeit einhalten zu können.

  • Was ist besser? Eine Arbeitsauslastungsdatei im Datenbanktabellenformat oder im Dateiformat zu erstellen?

Es hängt ganz von den Umgebungsbedingungen ab. Die Dateivariante hat den Vorteil, dass Sie die Arbeitsauslastungsdaten, wie normale schnell kopieren, zippen können.Wenn Sie Auslastungsdateien in DB Tabellenform vorliegen haben, können Sie diese leichter auswerten, da Sie diese besser (mittels Select Anweisung) Abfragen können.Zum Beispiel könnten Sie sich aus den Auslastungsdaten nur Select Anweisungen über eine bestimmte Tabelle ausgeben lassen oder nur Anweisungen eines bestimmten Users herausfiltern. Auf dieser Basis können Sie bestimmte Details optimieren, indem Sie gewisse Dinge herausfiltern, die für Sie nicht interessant sind und damit auch die DTA Optimierungslaufzeit beschleunigen. Sie erstellen sozusagen eine neue Auslastungstabelle, die nur entsprechende Auslastungsdaten enthält.

SQL Anweisung zur Erstellung einer neuen Auslastungstabelle durch Filterung einer anderen:

select * into tabelle_neue_auslastungsdaten from tabelle_basisauslastungsdaten 
where duration > 1000000

Sollten Sie eine .trc Datei vorliegen haben, können Sie diese mittels SQL Profiler laden und dann als DB Tabelle abspeichern.

  • Wie könnte ein Optimierungsszenario aussehen?

Beispiel: Sie sitzen in München und wollen für eine Abteilung oder einen Kunden die Produktivdatenbank, die Sie zuvor in Kopie auf Ihrem System in München (beim letzten Besuch) als Testdatenbank eingerichtet haben optimieren.Der Ablauf könnte sich jetzt so gestalten.

  • Die Abteilung in Hamburg schickt Ihnen immer die aktuell erstellten Auslastungsdateien, die regelmäßig erstellt werden (im Rahmen des Optimierungsprozesses) über das Internet. Diese Dateien stellen Sie Ihrem DTA zur Verfügung. Der DTA generiert Empfehlungen und nachdem Sie diese Empfehlungen begutachtet haben, schicken Sie diese via Internet nach Hamburg zurück wo diese eingespielt werden können.
  • Jetzt erstellt Hamburg erneut Auslastungsdateien der Datenbank, die jetzt die letzten Empfehlungen enthält und schickt Ihnen diese erneut zu und Sie generieren erneut Empfehlungen, die Sie dann wieder nach Hamburg schicken, wo diese erneut eingespielt werden, usw.. Eine rollierende Optimierung, die sich immer mehr an das Optimum herantastet bzw. herantasten sollte.

Der Nachteil bei der soeben beschriebenen Variante ist, das Testdatenbank und Produktivdatenbank wahrscheinlich andere Hardwareparameter benutzen und die Hardwareparameter des Produktivservers dem DTA bei dieser Methode nicht zur Verfügung stehen. In der Praxis konnten – trotz dieses Nachteils – sehr zufriedenstellende Ergebnisse erzielt werden.

Bitte beachten Sie, dass es in der Kommandozeilenversion des DTA SQL Server 2008 die Möglichkeit gibt, einen Testserver anzugeben. Dies ermöglicht – trotz unterschiedlicher Hardwareparameter – die Optimierung mit Hilfe der Hardwareparameter des Produktivservers durchzuführen. Diese Möglichkeit ist jedoch in der grafischen Oberfläche nicht gegeben.

  • Wie oft muss ich optimieren?

Sehen Sie die Optimierung als fortlaufenden Prozess. Die Anforderungen an Datenbanken können sich durch Erweiterungen, Weiterentwicklungen oder neue Abfragen ständig verändern. Entsprechende Indizes oder andere physikalische Strukturen müssen demzufolge angepasst werden. Insbesondere dann, wenn Performanceprobleme auftauchen.Sie müssen so oft optimieren, wie es die Leistung Ihrer Datenbank verlangt. Dies ist abhängig von der Situation und kann nicht pauschalisiert werden. Bei einigen Datenbanken reicht eine einzige Optimierung und die Performance ist sehr gut bis in alle Ewigkeit bei anderen Datenbanken, die eventuell stark anwachsen oder die sich ständig durch Entwicklungen verändern, ist eine regelmäßige Optimierung notwendig. In der Regel merken Sie spätestens dann, dass eine DB optimiert werden muss, wenn die Kollegen/ Kunden Sie auf die immer schlechter werdende Performance aufmerksam machen.Sie sollten es aber nicht soweit kommen lassen und die Leistungsparameter (E/A Operationen, CPU Time, etc.) Ihrer Datenbank entsprechend überwachen.

  • Kann ich auch eine einzelne SQL Anweisung optimieren lassen?

Ja, markieren Sie die SQL Anweisung im SQL Server Management Studio. Klicken Sie mit der rechten Maustaste und wählen Sie -Abfrage mit dem Datenbankoptimierungsratgeber analysieren-. Die Abfrage wird dem DTA zur Analyse übergeben.

 

Haftungsausschluss: Der Autor kann für die Richtigkeit und Vollständigkeit der Inhalte in diesem Artikel keine Haftung übernehmen.