Beschränken von Optimierungsdauer und -ereignissen

Optimierungssitzungen des Datenbankoptimierungsratgebers können mithilfe von Zeitbeschränkungen für die Optimierungsdauer oder mithilfe von Beschränkungen hinsichtlich der Anzahl von optimierten Ereignissen gesteuert werden. Zeitliche Beschränkungen der Optimierungsanalyse sind hilfreich, wenn Sie einen Produktionsserver während einer Wartung optimieren müssen. Beschränkungen hinsichtlich der Anzahl von optimierten Ereignissen sind hilfreich, wenn Sie zwei hypothetische Konfigurationen vergleichen, indem sie für beide Konfigurationen die gleiche Arbeitsauslastung optimieren.

Der Datenbankoptimierungsratgeber optimiert möglicherweise für eine bestimmte Konfiguration nicht alle Ereignisse in einer Arbeitsauslastung. Wenn Sie die Anzahl der zu optimierenden Ereignisse angeben, muss die Optimierungssitzung für jede Konfiguration die gleiche Anzahl optimierbarer Ereignisse berücksichtigen. Die Ergebnisse sind dadurch eher vergleichbar.

Steuern der Optimierungsdauer

Der Datenbankoptimierungsratgeber analysiert eine Arbeitsauslastung, bis die optimalen physischen Leistungsstrukturen für die angegebenen Datenbanken gefunden werden. Es hängt von der Arbeitsauslastung ab, wie lange dieser Vorgang dauert. Es könnte mehrere Tage dauern, bis der Datenbankoptimierungsratgeber für eine Arbeitsauslastung mit Hunderten von Ereignissen eine gründliche Analyse abgeschlossen hat. Die Datenbanken sind zwar während der Analyse verfügbar, aber die Leistung ist möglicherweise beeinträchtigt.

Legen Sie die maximale Zeitdauer fest, um zu steuern, wie lange der Datenbankoptimierungsratgeber eine Arbeitsauslastung analysiert. Die maximale Zeitdauer entspricht der Anzahl von Stunden und Minuten, für die der Datenbankoptimierungsratgeber eine Arbeitsauslastung analysieren soll. Das Ergebnis einer Einstellung für die maximale Zeitdauer ist eine Empfehlung basierend auf der optimalen Lösung, die der Datenbankoptimierungsratgeber bis zum Ablauf der Zeitdauer produzieren kann.

In der grafischen Benutzeroberfläche (GUI, Graphical User Interface) des Datenbankoptimierungsratgebers ist dieser Parameter standardmäßig auf 1 Stunde festgelegt. Im dta-Befehlszeilenprogramm ist das Standardlimit auf 8 Stunden festgelegt. Falls die vollständige Analyse weniger Zeit als das festgelegte Limit erfordert, wird die Optimierung nach Abschluss des Vorgangs beendet. Sie können eine unbegrenzte Optimierungszeit angeben, um in beiden Programmbenutzeroberflächen die bestmögliche Empfehlung zu generieren.

In den folgenden Unterabschnitten wird beschrieben, wie Sie diese Optimierungsoption in der GUI und an der Eingabeaufforderung festlegen.

Festlegen der Optimierungszeit in der grafischen Benutzeroberfläche

Wenn Sie das Optimierungszeitlimit in der GUI des Datenbankoptimierungsratgebers festlegen möchten, wählen Sie auf der Registerkarte Optimierungsoptionen die Option Optimierungszeit begrenzen aus, und legen Sie anschließend das Datum und die Uhrzeit für Beenden um fest.

Es gilt Folgendes:

  • Im Allgemeinen bedeutet eine längere Optimierungszeit optimalere Ergebnisse, weil ein größerer Teil der Arbeitsauslastung analysiert werden kann. Die Empfehlungen basieren auf vollständigeren Informationen.

  • Standardmäßig ist die maximale Optimierungszeit auf 1 Stunde festgelegt.

  • Deaktivieren Sie das Kontrollkästchen Optimierungszeit begrenzen, damit die Optimierungszeit nicht begrenzt wird.

Festlegen der Optimierungszeit im Befehlszeilen-Hilfsprogramm dta

Das Optimierungszeitlimit können Sie mit dem Befehlszeilen-Hilfsprogramm dta festlegen, indem Sie einen Wert für das Argument -A angeben. Angenommen, folgender dta-Befehl ist vorhanden:

dta -E -s MySession -D AdventureWorks2008R2 -if MyWorkloadScript.sql -fa IDX -A 120

Hierbei gibt -E eine vertrauenswürdige Verbindung an, -D gibt die zu optimierende Datenbank an, -if gibt die Arbeitsauslastungsdatei an, -fa IDX gibt an, dass der Datenbankoptimierungsratgeber nur das Hinzufügen von Indizes bei seiner Empfehlung berücksichtigen soll, und -A 120 bedeutet, dass die Optimierung innerhalb von 12  Minuten abgeschlossen werden muss.

Wenn Sie das dta-Hilfsprogramm an der Eingabeaufforderung ausführen (anstatt es in einem Skript für die automatische Optimierung aufzurufen), drücken Sie STRG+C, um die Optimierung zu beenden. Der Datenbankoptimierungsratgeber gibt dann die bestmögliche Empfehlung basierend auf der in dieser Zeit verarbeiteten Arbeitsauslastung zurück.

Es gilt Folgendes:

  • Im Allgemeinen bedeutet eine längere Optimierungszeit optimalere Ergebnisse, weil ein größerer Teil der Arbeitsauslastung analysiert werden kann. Die Empfehlungen basieren dann auf vollständigeren Informationen.

  • Verwenden Sie das Befehlszeilenargument –A 0, um eine unbegrenzte Optimierung anzugeben. Verwenden Sie dieses Argument, um die optimale Empfehlung für die gesamte Arbeitsauslastung zu erhalten.

  • Falls die Option –A nicht angegeben wird, wird standardmäßig der Wert –A 480 verwendet (ein Optimierungszeitraum von 8 Stunden).

  • Selbst wenn Sie die Tastenkombination STRG+C drücken, kann es eine Weile dauern, bis das dta-Hilfsprogramm die Analyseberichte erstellt hat und der Vorgang beendet wird.

Festlegen der Optimierungszeit in der XML-Eingabedatei

Die maximale Optimierungszeit kann auch in der XML-Eingabedatei festgelegt werden, die zusammen mit dem dta-Befehlszeilenprogramm verwendet werden kann. Um in der XML-Eingabedatei ein Optimierungszeitlimit in Minuten anzugeben, verwenden Sie das untergeordnete Element TuningTimeInMin des übergeordneten Elements TuningOptions. Weitere Informationen zur XML-Eingabedatei finden Sie unter XML-Eingabedateireferenz (Datenbankoptimierungsratgeber).

Steuern der Anzahl der zu optimierenden Ereignisse

Sie können die Anzahl von Ereignissen in Arbeitsauslastungen steuern, die vom Datenbankoptimierungsratgeber optimiert werden. Diese Option ist nur im Befehlszeilen-Hilfsprogramm dta verfügbar, und zwar über das Argument –n. Das Verhalten des dta-Hilfsprogramms bei Verwendung des Arguments -n hängt wie folgt von dem für das Argument -A angegebenen Wert ab, der das Optimierungszeitlimit definiert:

  • dta wird beendet, wenn die angegebene Anzahl von Ereignissen optimiert wurde oder wenn das angegebene Optimierungszeitlimit abgelaufen ist. Maßgebend ist, welches Ereignis zuerst eintritt. Falls das Argument -n nicht angegeben wird, optimiert dta standardmäßig alle Ereignisse in der Arbeitsauslastung. Falls das Argument -A nicht angegeben wird, verwendet dta standardmäßig ein Optimierungszeitlimit von 8 Stunden.

  • Um sicherzustellen, dass die mit dem Argument -n angegebene Anzahl von Ereignissen optimiert wird, geben Sie außerdem 0 für das Argument -A an, um eine unbegrenzte Optimierungszeit zu definieren. Beispiel: -n 250 -A 0.

Angeben der Anzahl der zu optimierenden Ereignisse in der XML-Eingabedatei

Die Anzahl der zu optimierenden Ereignisse kann auch in der XML-Eingabedatei festgelegt werden, die zusammen mit dem dta-Befehlszeilenprogramm verwendet werden kann. Um in der XML-Eingabedatei die Anzahl der zu optimierenden Ereignisse anzugeben, verwenden Sie das untergeordnete Element NumberOfEvents des übergeordneten Elements TuningOptions. Weitere Informationen zur XML-Eingabedatei finden Sie unter XML-Eingabedateireferenz (Datenbankoptimierungsratgeber).

Bewährte Methoden zum Begrenzen des Optimierungszeitraumes und der Anzahl optimierter Ereignisse

Es folgen Vorschläge zum Begrenzen der Optimierungszeit und der Anzahl optimierter Ereignisse:

  • Geben Sie für Einzelabfragen oder niedrige Arbeitsauslastungen (weniger als 100 Ereignisse) einen unbegrenzten Optimierungszeitraum an. Dies ergibt optimale Empfehlungen durch den Datenbankoptimierungsratgeber, und in den meisten Fällen wird die Optimierung in relativ kurzer Zeit ausgeführt.

  • Für große Arbeitsauslastungen (mehr als 100 Ereignisse) sollten Sie die folgenden Optionen in der aufgeführten Reihenfolge berücksichtigen. Verwenden Sie die letzte Option (4) erst, nachdem Sie die Optionen 1 bis 3 in Betracht gezogen haben.

    1. Falls der Benutzer eine Zeitbeschränkung verwendet, begrenzen Sie die Optimierungszeit.

    2. Falls die Optimierung einer festen Anzahl von Ereignissen ausreichend ist (z. B. könnten die ersten 10.000 Ereignisse für die restliche Arbeitsauslastung repräsentativ sein), geben Sie mithilfe des dta-Befehlszeilenprogramms die Anzahl von Ereignissen mit dem Argument –n an.

    3. Falls Sie das Befehlszeilen-Hilfsprogramm dta verwenden und die Optimierungszeit weiter begrenzen möchten, können Sie die beiden Argumente –A und –n verwenden. Wenn Sie beispielsweise -A 240 und –n 1000 angeben, beendet der Datenbankoptimierungsratgeber die Optimierung, sobald 1.000 Ereignisse optimiert wurden oder 4 Stunden verstrichen sind, je nachdem, welches Ereignis zuerst eintritt.

    4. Der Zeitaufwand für die Optimierung hängt von der Komplexität der Abfragen (Anzahl von Tabellen, auf die verwiesen wird), den ausgewählten Funktionen (das Optimieren indizierter Sichten ist zeitaufwändiger als das Optimieren von Indizes) und der Größe der Daten (zum Erstellen von Statistiken) ab. Der Datenbankoptimierungsratgeber verbringt normalerweise den Großteil der Optimierungszeit mit Aufrufen des Abfrageoptimierers. Zur Berechnung, wie viel Zeit dem Datenbankoptimierungsratgeber für die Optimierung zugeteilt werden sollte, gilt folgende einfache Faustregel:

      Für einfache Abfragen, die auf ein bis drei Tabellen verweisen, sollten Sie pro Abfrage etwa 1 Sekunde einberechnen, wenn nur Indizes optimiert werden, und etwa 10 Sekunden pro Abfrage, wenn Indizes und indizierte Sichten optimiert werden. Für komplexe Abfragen, die auf mehr als drei Tabellen verweisen, sollten Sie pro Abfrage etwa 10 Sekunden einberechnen, wenn nur Indizes optimiert werden, und etwa 100 Sekunden pro Abfrage, wenn Indizes und indizierte Sichten optimiert werden.

  • Falls der Datenbankoptimierungsratgeber angibt, dass 100 % der Arbeitsauslastung verarbeitet wurden, bedeutet dies, dass die gesamte Arbeitsauslastung analysiert, aber nicht notwendigerweise optimiert wurde. Um festzustellen, ob die gesamte Arbeitsauslastung optimiert wurde, suchen Sie am Ende des Optimierungsprotokolls folgende Meldung:

    "Keines der Ereignisse in der Arbeitsauslastung wurde optimiert. Erhöhen Sie die Zeitbegrenzung, oder geben Sie die Anzahl der Ereignisse an, die in der XML-Eingabedatei berücksichtigt werden sollen."

    Falls diese Meldung im Optimierungsprotokoll vorhanden ist, konnte der Datenbankoptimierungsratgeber nicht die gesamte Arbeitsauslastung optimieren. Um dieses Problem zu vermeiden, geben Sie einen längeren Optimierungszeitraum an. Um sicherzustellen, dass alle Ereignisse in der Arbeitsauslastung optimiert werden, können Sie eine unbegrenzte Optimierungszeit angeben. Wenn Sie keine unbegrenzte Optimierungszeit angeben, versucht der Datenbankoptimierungsratgeber innerhalb der angegebenen Optimierungszeit so viele Ereignisse wie möglich zu optimieren.

Hinweis Es gibt keine direkte Zuordnung zwischen den Modi Schnell, Mittel und Gründlich im Indexoptimierungs-Assistenten von Microsoft SQL Server 2000 und den Argumenten –A und –n im Datenbankoptimierungsratgeber. Wenn die Optimierung in einem bestimmten Modus (Schnell, Mittel oder Gründlich) in SQL Server 2000 eine bestimmte Zeit dauert, liefert im Allgemeinen der gleiche Zeitraum im Datenbankoptimierungsratgeber von SQL Server 2005 vergleichbare oder bessere Empfehlungen. Es wird empfohlen, dass Benutzer des Modus Gründlich den Datenbankoptimierungsratgeber mit einer unbegrenzten Optimierungszeit und einer unbegrenzten Anzahl zu optimierender Ereignisse in der Arbeitsauslastung verwenden.

Zusätzliche Methoden zum Begrenzen der Optimierungsdauer

Außer dem Begrenzen der Ausführungszeit für den Datenbankoptimierungsratgeber können Sie auch nur eine Teilmenge der Tabellen in der Datenbank optimieren.

Die folgenden Optionen stehen außerdem zur Verfügung:

  • Alle vorhandenen physischen Entwurfsstrukturen beibehalten (PDS).

  • Nur Indizes beibehalten.

  • Nur gruppierte Indizes beibehalten.

Der Datenbankoptimierungsratgeber schließt alle Index- oder Abfragehinweise in die endgültige Empfehlung ein, selbst wenn der Index für die Tabelle nicht optimal geeignet ist. Indizes in anderen Tabellen, auf die in der Abfrage verwiesen wird, können vorgeschlagen und empfohlen werden. Alle als Indizes angegebene Hinweise sind jedoch immer Teil der endgültigen Empfehlung. Die Hinweise verhindern möglicherweise, dass der Datenbankoptimierungsratgeber einen besseren Ausführungsplan wählt. Entfernen Sie eventuell alle Indexhinweise aus Abfragen, bevor Sie die Arbeitsauslastung analysieren.