Reduzieren der Optimierungsauslastung des Produktionsservers

Durch das Optimieren einer großen Arbeitsauslastung kann es zu einem hohen Verwaltungsaufwand auf dem Server kommen, der optimiert wird. Dies ergibt sich aus den zahlreichen Aufrufen des Abfrageoptimierers durch den Datenbankmodul-Optimierungsratgeber während des Optimierungsprozesses. Wenn Sie zusätzlich zum Produktionsserver einen Testserver verwenden, wird dieses Problem behoben.

Verwendung eines Testservers durch den Datenbankmodul-Optimierungsratgeber

Die traditionelle Verwendungsweise eines Testservers besteht im Kopieren aller Daten vom Produktionsserver auf den Testserver, Optimieren des Testservers und anschließenden Implementieren der Empfehlung auf dem Produktionsserver. Dadurch wird zwar die Leistungsbeeinträchtigung auf dem Produktionsserver beseitigt, aber dies entspricht nicht der optimalen Lösung. Beispielsweise kann das Kopieren großer Datenbankmengen vom Produktionsserver auf den Testserver viel Zeit und viele Ressourcen beanspruchen. Darüber hinaus ist die Testserverhardware selten so leistungsfähig wie die Hardware, die für Produktionsserver bereitgestellt wird. Der Optimierungsprozess basiert auf dem Abfrageoptimierer, und die von diesem generierten Empfehlungen hängen teilweise von der zugrunde liegenden Hardware ab. Falls die Test- und Produktionsserverhardware nicht identisch ist, wird dadurch die Qualität der Empfehlungen des Datenbankmodul-Optimierungsratgebers reduziert.

Um diese Probleme zu vermeiden, optimiert der Datenbankmodul-Optimierungsratgeber eine Datenbank auf einem Produktionsserver durch Auslagern des größten Teils der Optimierungsauslastung auf einen Testserver. Dies geschieht durch Verwenden der Hardwarekonfigurationsinformationen des Produktionsservers und ohne die Daten tatsächlich vom Produktionsserver auf den Testserver zu kopieren. Der Datenbankmodul-Optimierungsratgeber kopiert keine tatsächlichen Daten vom Produktionsserver auf den Testserver. Er kopiert nur die Metadaten und notwendigen Statistiken.

Die folgenden Schritte beschreiben den Prozess zum Optimieren einer Produktionsdatenbank auf einem Testserver:

  1. Stellen Sie sicher, dass der Benutzer, der den Testserver verwenden möchte, auf beiden Servern vorhanden ist.
    Bevor Sie beginnen, sollten Sie sicherstellen, dass der Benutzer, der den Testserver zum Optimieren einer Datenbank auf dem Produktionsserver verwenden möchte, auf beiden Servern vorhanden ist. Dazu müssen Sie den Benutzer und den zugehörigen Anmeldenamen auf dem Testserver erstellen. Falls Sie ein Mitglied der festen Serverrolle sysadmin auf beiden Computern sind, ist dieser Schritt nicht erforderlich.
  2. Optimieren Sie die Arbeitsauslastung auf dem Testserver.
    Zum Optimieren einer Arbeitsauslastung auf einem Testserver müssen Sie eine XML-Eingabedatei zusammen mit dem Befehlszeilen-Dienstprogramm dta verwenden. Geben Sie in der XML-Eingabedatei den Namen des Testservers mit dem untergeordneten Element TestServer sowie die Werte für die anderen untergeordneten Elemente im übergeordneten Element TuningOptions an.
    Während des Optimierungsprozesses erstellt der Datenbankmodul-Optimierungsratgeber eine Shelldatenbank auf dem Testserver. Um diese Shelldatenbank zu erstellen und zu optimieren, führt der Datenbankmodul-Optimierungsratgeber folgende Aufrufe beim Produktionsserver aus:
    1. Der Datenbankmodul-Optimierungsratgeber importiert Metadaten aus der Produktionsdatenbank in die Testserver-Shelldatenbank. Zu diesen Metadaten zählen leere Tabellen, Indizes, Sichten, gespeicherte Prozeduren, Trigger usw. Auf diese Weise können die Arbeitsauslastungsabfragen für die Testserver-Shelldatenbank ausgeführt werden.
    2. Der Datenbankmodul-Optimierungsratgeber importiert Statistiken vom Produktionsserver, damit die Abfrageoptimierung Abfragen auf dem Testserver präzise optimieren kann.
    3. Der Datenbankmodul-Optimierungsratgeber importiert Hardwareparameter, die die Anzahl von Prozessoren und verfügbaren Arbeitsspeicher angeben, vom Produktionsserver, um der Abfrageoptimierung die erforderlichen Informationen zum Generieren eines Abfrageplans bereitzustellen.
  3. Nachdem der Datenbankmodul-Optimierungsratgeber die Testserver-Shelldatenbank optimiert hat, wird eine Optimierungsempfehlung generiert.
  4. Wenden Sie die beim Optimieren des Testservers erhaltene Empfehlung auf den Produktionsserver an.

Die folgende Abbildung veranschaulicht das Szenario mit dem Testserver und dem Produktionsserver:

Datenbankmodul-Optimierungsratgeber: Testserververwendung

ms190389.note(de-de,SQL.90).gifHinweis:
Das Feature der Optimierung mit einem Testserver wird auf der grafischen Benutzeroberfläche (GUI) des Datenbankmodul-Optimierungsratgebers nicht unterstützt.

Beispiel

Stellen Sie zunächst sicher, dass der Benutzer, der die Optimierung ausführen möchte, auf dem Testserver und dem Produktionsserver vorhanden ist.

Nachdem die Benutzerinformationen auf den Testserver kopiert wurden, können Sie Ihre Testserver-Optimierungssitzung in der XML-Eingabedatei des Datenbankmodul-Optimierungsratgebers definieren. Die folgende XML-Beispieleingabedatei veranschaulicht, wie Sie einen Testserver zum Optimieren einer Datenbank mit dem Datenbankmodul-Optimierungsratgeber angeben.

In diesem Beispiel wird die MyDatabaseName-Datenbank auf MyServerName optimiert. Das Transact-SQL-Skript MyWorkloadScript.sql wird als Arbeitsauslastung verwendet. Diese Arbeitsauslastung enthält Ereignisse, die für MyDatabaseName ausgeführt werden. Die meisten Aufrufe des Abfrageoptimierers bei dieser Datenbank im Rahmen des Optimierungsprozesses werden von der Shelldatenbank ausgeführt, die auf MyTestServerName gespeichert ist. Die Shelldatenbank setzt sich aus Metadaten und Statistiken zusammen. Dieser Prozess führt dazu, dass der Optimierungsaufwand auf den Testserver ausgelagert wird. Wenn der Datenbankmodul-Optimierungsratgeber die Optimierungsempfehlung mithilfe dieser XML-Eingabedatei generiert, sollten nur Indizes berücksichtigt werden (<FeatureSet>IDX</FeatureSet>), keine Partitionierung. Die vorhandenen physikalischen Entwurfsstrukturen in MyDatabaseName müssen nicht beibehalten werden.

<?xml version="1.0" encoding="utf-16" ?>
<DTAXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://schemas.microsoft.com/sqlserver/2004/07/dta">
  <DTAInput>
    <Server>
      <Name>MyServerName</Name>
      <Database>
        <Name>MyDatabaseName</Name>
      </Database>
    </Server>
    <Workload>
      <File>MyWorkloadScript.sql</File>
    </Workload>
    <TuningOptions>
      <TestServer>MyTestServerName</TestServer>
      <FeatureSet>IDX</FeatureSet>
      <Partitioning>NONE</Partitioning>
      <KeepExisting>NONE</KeepExisting>
    </TuningOptions>
  </DTAInput>
</DTAXML>

Siehe auch

Konzepte

Gesichtspunkte bei der Verwendung von Testservern

Andere Ressourcen

XML-Eingabedatei (Referenz) (DTA)

Hilfe und Informationen

Informationsquellen für SQL Server 2005