Riduzione del carico di ottimizzazione del server di produzioneReduce the Production Server Tuning Load

Motore di databaseDatabase Engine Ottimizzazione guidata si basa su Query Optimizer per analizzare un carico di lavoro e fornire indicazioni di ottimizzazione. Tuning Advisor relies on the query optimizer to analyze a workload and to make tuning recommendations. L'esecuzione di questa analisi sul server di produzione aumenta il carico del server e può ridurre le prestazioni del server durante la sessione di ottimizzazione.Performing this analysis on the production server adds to the server load and can hurt server performance during the tuning session. È possibile diminuire l'impatto sul carico del server durante una sessione di ottimizzazione utilizzando un server di prova oltre al server di produzione.You can reduce the impact to the server load during a tuning session by using a test server in addition to the production server.

Modalità di utilizzo di un server di prova da parte di Ottimizzazione guidata motore di databaseHow Database Engine Tuning Advisor Uses a Test Server

L'utilizzo tradizionale di un server di prova consiste nel copiare tutti i dati dal server di produzione sul server di prova, ottimizzare quest'ultimo e quindi implementare l'indicazione sul server di produzione.The traditional way to use a test server is to copy all of the data from your production server to your test server, tune the test server, and then implement the recommendation on your production server. Questo processo elimina l'effetto sulle prestazioni del server di produzione, ma non rappresenta comunque la soluzione ideale.This process eliminates the performance impact on your production server, but nevertheless is not the optimal solution. Ad esempio, la copia di grandi quantità di dati dal server di produzione sul server di prova può richiedere notevoli quantità di tempo e risorse.For example, copying large amounts of data from the production to the test server can consume substantial amounts of time and resources. Inoltre, l'hardware del server di prova raramente è potente quanto quello utilizzato per i server di produzione.In addition, test server hardware is seldom as powerful as the hardware that is deployed for production servers. Il processo di ottimizzazione si basa su Query Optimizer e le indicazioni da esso generate dipendono in parte dall'hardware sottostante.The tuning process relies on the query optimizer, and the recommendations it generates are based in part on the underlying hardware. Se l'hardware del server di prova e di produzione non sono identici, la qualità delle indicazioni di Ottimizzazione guidata Motore di databaseDatabase Engine ne risente.If the test and production server hardware are not identical, the Motore di databaseDatabase Engine Tuning Advisor recommendation quality is diminished.

Per evitare questi problemi, Ottimizzazione guidata Motore di databaseDatabase Engine esegue l'ottimizzazione di un database in un server di produzione ripartendo la maggioranza del carico di ottimizzazione in un server di prova.To avoid these problems, Motore di databaseDatabase Engine Tuning Advisor tunes a database on a production server by offloading most of the tuning load onto a test server. Questo avviene utilizzando le informazioni di configurazione hardware del server di produzione e senza copiare effettivamente i dati dal server di produzione sul server di prova.It does this by using the production server hardware configuration information and without actually copying the data from the production server to the test server. Motore di databaseDatabase Engine Ottimizzazione guidata non copia i dati effettivi dal server di produzione sul server di prova, Tuning Advisor does not copy actual data from the production server to the test server. ma solo i metadati e le statistiche necessarie.It only copies the metadata and necessary statistics.

Nella procedura seguente viene illustrato il processo per l'ottimizzazione di un database di produzione su un server di prova:The following steps outline the process for tuning a production database on a test server:

  1. Verificare che l'utente che desidera utilizzare il server di prova sia presente su entrambi i server.Make sure that the user who wants to use the test server exists on both servers.

    Prima di iniziare, verificare che l'utente che desidera utilizzare il server di prova per l'ottimizzazione del database sul server di produzione sia presente su entrambi i server.Before you start, make sure that the user who wants to use the test server to tune a database on the production server exists on both servers. Questo richiede la creazione dell'utente e del relativo account di accesso sul server di prova.This requires that you create the user and his or her login on the test server. Per i membri del ruolo predefinito del server sysadmin su entrambi i computer, questo passaggio non è necessario.If you are a member of the sysadmin fixed server role on both computers, this step is not necessary.

  2. Ottimizzazione del carico di lavoro sul server di prova.Tune the workload on the test server.

    Per ottimizzare un carico di lavoro su un server di prova, è necessario usare un file di input XML con l'utilità della riga di comando dta .To tune a workload on a test server, you must use an XML input file with the dta command-line utility. Nel file di input XML specificare il nome del server di prova con l'elemento secondario TestServer oltre ai valori per gli altri elementi secondari dell'elemento padre TuningOptions .In the XML input file, specify the name of your test server with the TestServer subelement in addition to specifying the values for the other subelements under the TuningOptions parent element.

    Durante il processo di ottimizzazione, Ottimizzazione guidata motore di database crea uno scheletro di database sul server di prova.During the tuning process, Database Engine Tuning Advisor creates a shell database on the test server. Per creare questo scheletro di database e ottimizzarlo, Ottimizzazione guidata motore di database esegue chiamate al server di produzione per gli elementi seguenti:To create this shell database and tune it, Database Engine Tuning Advisor makes calls to the production server for the following:

    1. Motore di databaseDatabase Engine Ottimizzazione guidata importa i metadati dal database di produzione sullo scheletro di database del server di prova. Tuning Advisor imports metadata from the production database to the test server shell database. Questi metadati includono tabelle vuote, indici, viste, stored procedure, trigger e così via.This metadata includes empty tables, indexes, views, stored procedures, triggers, and so on. Questo rende possibile l'esecuzione delle query del carico di lavoro sullo scheletro di database del server di prova.This makes it possible for the workload queries to execute against the test server shell database.

    2. Motore di databaseDatabase Engine Ottimizzazione guidata importa le statistiche dal server di produzione in modo che Query Optimizer possa ottimizzare in modo accurato le query sul server di prova. Tuning Advisor imports statistics from the production server so the query optimizer can accurately optimize queries on the test server.

    3. Motore di databaseDatabase Engine Ottimizzazione guidata importa i parametri hardware specificando il numero di processori e la memoria disponibile dal server di produzione per offrire a Query Optimizer le informazioni necessarie per generare un piano di query. Tuning Advisor imports hardware parameters specifying the number of processors and available memory from the production server to provide the query optimizer with the information it needs to generate a query plan.

  3. Dopo aver ottimizzato lo scheletro di database del server di prova, Ottimizzazione guidata Motore di databaseDatabase Engine genera un'indicazione di ottimizzazione.After Motore di databaseDatabase Engine Tuning Advisor finishes tuning the test server shell database, it generates a tuning recommendation.

  4. Applicare l'indicazione derivata dall'ottimizzazione del server di prova al server di produzione.Apply the recommendation received from tuning the test server to the production server.

    Nella seguente figura viene illustrato lo scenario relativo al server di prova e al server di produzione:The following illustration shows the test server and production server scenario:

    Uso del server di prova con Ottimizzazione guidata motore di databaseDatabase Engine Tuning Advisor test server usage

Nota

La funzionalità di ottimizzazione del server di prova non è supportata nell'interfaccia utente grafica (GUI) di Ottimizzazione guidata Motore di databaseDatabase Engine .The test server tuning feature is not supported in the Motore di databaseDatabase Engine Tuning Advisor graphical user interface (GUI).

EsempioExample

Innanzitutto verificare che l'utente che desidera eseguire l'ottimizzazione sia presente sul server di prova e di produzione.First, make sure that the user who wants to perform the tuning exists on both the test and production servers.

Dopo aver copiato le informazioni utente sul server di prova, è possibile definire la sessione di ottimizzazione del server di prova nel file di input XML di Ottimizzazione guidata Motore di databaseDatabase Engine .After the user information is copied over to your test server, you can define your test server tuning session in the Motore di databaseDatabase Engine Tuning Advisor XML input file. Nell'esempio di file di input XML seguente viene illustrato come specificare un server di prova per ottimizzare un database tramite Ottimizzazione guidata Motore di databaseDatabase Engine .The following example XML input file illustrates how to specify a test server to tune a database with Motore di databaseDatabase Engine Tuning Advisor.

Nell'esempio, il database MyDatabaseName viene ottimizzato su MyServerName.In this example, the MyDatabaseName database is being tuned on MyServerName. Lo script Transact-SQLTransact-SQL , MyWorkloadScript.sql, viene utilizzato come carico di lavoro.The Transact-SQLTransact-SQL script, MyWorkloadScript.sql, is used as the workload. Esso include gli eventi eseguiti su MyDatabaseName.This workload contains events that execute against MyDatabaseName. La maggioranza delle chiamate di Query Optimizer al database, che si verificano nell'ambito del processo di ottimizzazione, vengono gestite dallo scheletro di database che risiede su MyTestServerName.Most of the query optimizer calls to this database, which occur as part of the tuning process, are handled by the shell database that resides on MyTestServerName. Lo scheletro di database è costituito da metadati e statistiche.The shell database is composed of metadata and statistics. Questo processo determina la ripartizione del carico dell'overhead di ottimizzazione sul server di prova.This process results in the tuning overhead being offloaded to the test server. Quando Ottimizzazione guidata Motore di databaseDatabase Engine genera la propria indicazione di ottimizzazione utilizzando questo file di input XML, dovrebbe considerare solo gli indici (<FeatureSet>IDX</FeatureSet>), nessun partizionamento e non dovrebbe essere necessario mantenere alcuna delle strutture di progettazione fisica esistenti in MyDatabaseName.When Motore di databaseDatabase Engine Tuning Advisor generates its tuning recommendation using this XML input file, it should consider indexes only (<FeatureSet>IDX</FeatureSet>), no partitioning, and need not keep any of the existing physical design structures in 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>  

Vedere ancheSee Also

Considerazioni relative all'utilizzo di server di prova Considerations for Using Test Servers
Guida di riferimento ai file di input XML (Ottimizzazione guidata motore di database) XML Input File Reference (Database Engine Tuning Advisor)