Beschränken von Optimierungsdauer und -ereignissen

Optimierungssitzungen des Optimierungsratgebers von Datenbankmodul können Sie mithilfe von Zeitbeschränkungen für die Optimierungsdauer oder mithilfe von Beschränkungen hinsichtlich der Anzahl von optimierten Ereignissen steuern. 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 Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul analysiert eine Arbeitsauslastung, bis die optimalen physikalischen 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 Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul eine Arbeitsauslastung analysiert. Die maximale Zeitdauer entspricht der Anzahl von Stunden und Minuten, für die der Optimierungsratgeber von Datenbankmodul eine Arbeitsauslastung analysieren soll. Das Ergebnis einer Einstellung für die maximale Zeitdauer ist eine Empfehlung basierend auf der optimalen Lösung, die der Optimierungsratgeber von Datenbankmodul bis zum Ablauf der Zeitdauer produzieren kann.

In der grafischen Benutzeroberfläche (GUI, Graphical User Interface) des Optimierungsratgebers von Datenbankmodul 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 Optimierungsratgebers von Datenbankmodul 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-Dienstprogramm dta

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

dta -E -s MySession -D AdventureWorks -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 Optimierungsratgeber von Datenbankmodul nur das Hinzufügen von Indizes bei seiner Empfehlung berücksichtigen soll, und -A 120 bedeutet, dass die Optimierung innerhalb von 120 Minuten abgeschlossen werden muss.

Wenn Sie das dta-Dienstprogramm 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 Optimierungsratgeber von Datenbankmodul 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-Dienstprogramm 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-Eingabedatei (Referenz) (DTA).

Steuern der Anzahl der zu optimierenden Ereignisse

Sie können die Anzahl von Ereignissen in Arbeitsauslastungen steuern, die vom Optimierungsratgeber von Datenbankmodul optimiert werden. Diese Option ist nur im dta-Befehlszeilenprogramm verfügbar, und zwar über das Argument –n. Das Verhalten des dta-Dienstprogramms 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 ist, optimiert dta standardmäßig alle Ereignisse in der Arbeitsauslastung. Falls das Argument -A nicht angegeben ist, 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-Eingabedatei (Referenz) (DTA).

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 Optimierungsratgeber von Datenbankmodul, 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 dta-Befehlszeilenprogramm 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 Optimierungsratgeber von Datenbankmodul 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 Features (das Optimieren indizierter Sichten ist zeitaufwändiger als das Optimieren von Indizes) und der Größe der Daten ab (zum Erstellen von Statistiken). Der Optimierungsratgeber von Datenbankmodul verbringt normalerweise den Großteil der Optimierungszeit mit Aufrufen des Abfrageoptimierers. Zur Berechnung, wie viel Zeit dem Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul angibt, dass 100 % der Arbeitsauslastung verarbeitet wurde, 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 Ergebnisse in der Arbeitsauslastung wurde ausgewertet. Erhöhen Sie die Zeitbegrenzung mithilfe von (1) 'Optimierungszeit begrenzen' auf dem Bildschirm 'Optimierungsoptionen' in 'DTAShell' oder (2) der Option '-A' in der DTA-Befehlszeile oder (3) mit <TuningTimeInMin> unter <TuningOptions> in der XML-Eingabedatei für den Datenbankoptimierungsratgeber (DTA)."
    Falls diese Meldung im Optimierungsprotokoll vorhanden ist, konnte der Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul innerhalb der angegebenen Optimierungszeit so viele Ereignisse wie möglich zu optimieren.
  1. Wenn der Benutzer eine Zeitbeschränkung verwendet, begrenzen Sie die Optimierungszeit.
  2. Wenn 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. Wenn Sie das dta-Befehlszeilenprogramm 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 Optimierungsratgeber von Datenbankmodul 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 Features (das Optimieren indizierter Sichten ist zeitaufwändiger als das Optimieren von Indizes) und der Größe der Daten ab (zum Erstellen von Statistiken). Der Optimierungsratgeber von Datenbankmodul verbringt normalerweise den Großteil der Optimierungszeit mit Aufrufen des Abfrageoptimierers. Zur Berechnung, wie viel Zeit dem Optimierungsratgeber von Datenbankmodul 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.

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 Optimierungsratgeber von Datenbankmodul. 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 Optimierungsratgeber von Datenbankmodul vergleichbare oder bessere Empfehlungen. Es wird empfohlen, dass Benutzer des Modus Gründlich den Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul können Sie auch nur eine Teilmenge der Tabellen in der Datenbank optimieren.

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

  • Alle vorhandenen physikalischen Entwurfsstrukturen beibehalten (PDS).
  • Nur Indizes beibehalten.
  • Nur gruppierte Indizes beibehalten.

Der Optimierungsratgeber von Datenbankmodul 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 Optimierungsratgeber von Datenbankmodul einen besseren Ausführungsplan wählt. Entfernen Sie eventuell alle Indexhinweise aus Abfragen, bevor Sie die Arbeitsauslastung analysieren.

Siehe auch

Konzepte

Angeben physikalischer Entwurfsstrukturen
Beschränken des Speicherplatzes für Empfehlungen
Szenarien für die Auswahl von Optimierungsoptionen
Nicht unterstützte Optimierungsoptionen

Hilfe und Informationen

Informationsquellen für SQL Server 2005