Reduzieren der Optimierungsauslastung des Produktionsservers
Datenbankoptimierungsratgeber basiert auf dem Abfrageoptimierer, um eine Workload zu analysieren und Optimierungsempfehlungen zu geben. 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 Test- und Produktionsserverhardware nicht identisch sind, verringert sich die Datenbankoptimierungsratgeber Empfehlungsqualität.
Um diese Probleme zu vermeiden, Datenbankoptimierungsratgeber eine Datenbank auf einem Produktionsserver optimieren, indem der Großteil der Optimierungslast auf einen Testserver ausgelagert wird. Dies geschieht durch Verwenden der Hardwarekonfigurationsinformationen des Produktionsservers und ohne die Daten tatsächlich vom Produktionsserver auf den Testserver zu kopieren. Datenbankoptimierungsratgeber 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:
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.
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:
Datenbankoptimierungsratgeber 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.
Datenbankoptimierungsratgeber importiert Statistiken vom Produktionsserver, damit der Abfrageoptimierer Abfragen auf dem Testserver genau optimieren kann.
Datenbankoptimierungsratgeber importiert Hardwareparameter, die die Anzahl der Prozessoren und den verfügbaren Arbeitsspeicher vom Produktionsserver angeben, um dem Abfrageoptimierer die Informationen bereitzustellen, die er zum Generieren eines Abfrageplans benötigt.
Nachdem Datenbankoptimierungsratgeber die Optimierung der Testserver-Shelldatenbank abgeschlossen hat, wird eine Optimierungsempfehlung generiert.
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:
Hinweis
Die Testserveroptimierungsfunktion wird in der Datenbankoptimierungsratgeber grafischen Benutzeroberfläche (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 Datenbankoptimierungsratgeber XML-Eingabedatei definieren. In der folgenden XML-Beispieleingabedatei wird veranschaulicht, wie Sie einen Testserver angeben, um eine Datenbank mit Datenbankoptimierungsratgeber zu optimieren.
In diesem Beispiel wird die MyDatabaseName
-Datenbank auf MyServerName
optimiert. Als Workload wird das Transact-SQL-Skript MyWorkloadScript.sql
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 Datenbankoptimierungsratgeber seine Optimierungsempfehlung mithilfe dieser XML-Eingabedatei generiert, sollte er nur Indizes (<FeatureSet>IDX</FeatureSet>
), keine Partitionierung berücksichtigen und keine der vorhandenen physischen Entwurfsstrukturen in MyDatabaseName
beibehalten.
<?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>
Weitere Informationen
Überlegungen zur Verwendung derXML-Eingabedateireferenz für Testserver (Datenbankoptimierungsratgeber)