Reduzieren der Optimierungsauslastung des Produktionsservers

Gilt für:SQL ServerAzure SQL-Datenbank

Der Optimierungsratgeber des Datenbankmoduls basiert auf dem Abfrageoptimierer, um eine Workload zu analysieren und Optimierungsempfehlungen zu treffen. Wenn diese Analyse auf dem Produktionsserver ausgeführt wird, erhöht sich die Serverlast. Dies kann zu Einbußen bei der Serverleistung während der Optimierungssitzung führen. Sie reduzieren die Serverlast während einer Optimierungssitzung, indem Sie zusätzlich zum Produktionsserver einen Testserver verwenden.

Verwendung eines Testservers durch den Datenbankoptimierungsratgeber

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. Wenn die Hardware des Test- und Produktionsservers nicht identisch ist, wird die Empfehlungsqualität des Datenbankmoduloptimierungsratgebers verringert.

Um diese Probleme zu vermeiden, gibt der Datenbankmoduloptimierungsratgeber eine Datenbank auf einem Produktionsserver ab, indem der Großteil der Optimierungslast auf einen Testserver entladen wird. Dies geschieht durch Verwenden der Hardwarekonfigurationsinformationen des Produktionsservers und ohne die Daten tatsächlich vom Produktionsserver auf den Testserver zu kopieren. Der Datenbankmoduloptimierungsratgeber 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-Hilfsprogramm 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 Datenbankoptimierungsratgeber eine Shelldatenbank auf dem Testserver. Um diese Shelldatenbank zu erstellen und zu optimieren, führt der Datenbankoptimierungsratgeber folgende Aufrufe beim Produktionsserver aus:

    1. Der Datenbankmoduloptimierungsratgeber importiert Metadaten aus der Produktionsdatenbank in die Shelldatenbank des Testservers. 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 Datenbankmoduloptimierungsratgeber importiert Statistiken vom Produktionsserver, sodass der Abfrageoptimierer Abfragen auf dem Testserver genau optimieren kann.

    3. Der Datenbankmoduloptimierungsratgeber importiert Hardwareparameter, die die Anzahl der Prozessoren und den verfügbaren Arbeitsspeicher vom Produktionsserver angeben, um den Abfrageoptimierer mit den Informationen bereitzustellen, die zum Generieren eines Abfrageplans erforderlich sind.

  3. Nachdem der Datenbankmoduloptimierungsratgeber die Optimierung der Servershelldatenbank abgeschlossen 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:

Database Engine Tuning Advisor test server usage

Hinweis

Das Feature zum Optimieren des Testservers wird in der grafischen Benutzeroberfläche des Datenbankmoduls Tuning Advisor (GUI) 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 Ihren Testserver kopiert wurden, können Sie ihre Testserveroptimierungssitzung in der XML-Eingabedatei des Datenbankmoduls Tuning Advisor definieren. Im folgenden Beispiel einer XML-Eingabedatei wird veranschaulicht, wie Sie einen Testserver angeben, um eine Datenbank mit dem Datenbankmoduloptimierungsratgeber zu optimieren.

In diesem Beispiel wird die MyDatabaseName -Datenbank auf MyServerNameoptimiert. Das Transact-SQL-Skript MyWorkloadScript.sqlwird als Workload verwendet. Diese Arbeitsauslastung enthält Ereignisse, die für MyDatabaseNameausgeführt werden. Die meisten Aufrufe des Abfrageoptimierers bei dieser Datenbank im Rahmen des Optimierungsprozesses werden von der Shelldatenbank ausgeführt, die auf MyTestServerNamegespeichert 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 Optimierungsratgeber des Datenbankmoduls seine Optimierungsempfehlung mithilfe dieser XML-Eingabedatei generiert, sollte er nur Indizes (<FeatureSet>IDX</FeatureSet>), keine Partitionierung in Betracht ziehen und keine der vorhandenen physischen Entwurfsstrukturen beibehalten MyDatabaseName.

<?xml version="1.0" encoding="utf-16" ?>  
<DTAXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://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>  

Weitere Informationen

Gesichtspunkte bei der Verwendung von Testservern
XML-Eingabedateireferenz (Datenbankoptimierungsratgeber)