Уменьшение настроечной загрузки рабочего сервера

Область применения:SQL ServerAzure SQL Database

Помощник по настройке ядра СУБД использует оптимизатор запросов для анализа рабочей нагрузки и выполнения рекомендаций по настройке. Выполнение этого анализа на рабочем сервере добавляет нагрузки этому серверу и может снизить его производительность на время сеанса настройки. Чтобы уменьшить дополнительную нагрузку сервера во время сеанса настройки, можно использовать тестовый сервер в дополнение к рабочему серверу.

Как помощник по настройке ядра СУБД работает с тестовым сервером

Традиционным методом является копирование всех данных с рабочего сервера на тестовый, затем производится настройка тестового сервера и реализация рекомендаций на производственном сервере. Этот процесс устраняет влияние на производительность рабочего сервера, но не является оптимальным решением. Например, копирование большого количества данных с рабочего сервера на тестовый может занять много времени и ресурсов. Кроме того, оборудование тестового сервера редко также производительно, как и использующееся на рабочих серверах. Процесс настройки полагается на оптимизатор запросов, а формируемые им рекомендации частично основываются на параметрах оборудования. Если тестовое и производственное оборудование сервера не идентичны, качество рекомендаций помощника по настройке ядра СУБД уменьшается.

Чтобы избежать этих проблем, помощник по настройке ядра СУБД настраивает базу данных на рабочем сервере, выгрузив большую часть нагрузки настройки на тестовый сервер. Это делается с использованием сведений о конфигурации оборудования рабочего сервера и без явного копирования данных с рабочего сервера на тестовый. Помощник по настройке ядра СУБД не копирует фактические данные с рабочего сервера на тестовый сервер. Он копирует только метаданные и необходимую статистику.

Следующие шаги в общем виде описывают процесс настройки производственной базы данных на тестовом сервере.

  1. Убедитесь, что пользователь, который хочет работать с тестовым сервером, есть на обоих серверах.

    ПЕРЕД НАЧАЛОМ УБЕДИТЕСЬ, ЧТО ПОЛЬЗОВАТЕЛЬ, КОТОРЫЙ ХОЧЕТ РАБОТАТЬ С ТЕСТОВЫМ СЕРВЕРОМ ДЛЯ НАСТРОЙКИ БАЗЫ ДАННЫХ РАБОЧЕГО СЕРВЕРА, СУЩЕСТВУЕТ НА ОБОИХ СЕРВЕРАХ.Перед началом убедитесь, что пользователь, который хочет работать с тестовым сервером для настройки базы данных рабочего сервера, существует на обоих серверах. Для этого нужно создать пользователя и его имя входа на тестовом сервере. Если вы являетесь членом предопределенной роли сервера sysadmin на обоих компьютерах, этот шаг можно пропустить.

  2. Настройте рабочую нагрузку на тестовом сервере.

    Чтобы настроить рабочую нагрузку на тестовом сервере, используйте входной файл XML-данных и программу командной строки dta . В этом XML-файле укажите имя тестового сервера во вложенном элементе TestServer вместе с другими значениями других вложенных элементов родительского элемента TuningOptions .

    Во время процесса настройки помощник по настройке ядра СУБД создает на тестовом сервере базу данных оболочки. Чтобы создать и настроить базу данных, помощник по настройке ядра СУБД отправляет рабочему серверу представленные ниже вызовы.

    1. Помощник по настройке ядра СУБД импортирует метаданные из рабочей базы данных в тестовую базу данных оболочки сервера. В эти метаданные входят пустые таблицы, индексы, представления, хранимые процедуры, триггеры и т. д. Таким образом, возможно выполнять запросы рабочей нагрузки к базе данных оболочки тестового сервера.

    2. Помощник по настройке ядра СУБД импортирует статистику с рабочего сервера, чтобы оптимизатор запросов точно оптимизирул запросы на тестовом сервере.

    3. Помощник по настройке ядра СУБД импортирует аппаратные параметры, указывающие количество процессоров и доступную память с рабочего сервера, чтобы предоставить оптимизатору запросов сведения, необходимые для создания плана запроса.

  3. После того как помощник по настройке ядра СУБД завершит настройку базы данных оболочки тестового сервера, она создает рекомендацию по настройке.

  4. Примените рекомендацию, полученную при настройке тестового сервера, на рабочем сервере.

На следующем рисунке показан сценарий с использованием тестового и рабочего серверов.

Database Engine Tuning Advisor test server usage

Заметка

Функция настройки тестового сервера не поддерживается в графическом пользовательском интерфейсе помощника по настройке ядра СУБД (GUI).

пример

Сначала убедитесь, что пользователь, который хочет работать с рабочим сервером, есть на обоих серверах.

После копирования сведений о пользователе на тестовый сервер можно определить сеанс настройки тестового сервера в XML-файле помощника по настройке ядра СУБД. В следующем примере XML-входного файла показано, как указать тестовый сервер для настройки базы данных с помощью помощника по настройке ядра СУБД.

В этом примере база данных MyDatabaseName настраивается на сервере MyServerName. Скрипт MyWorkloadScript.sqlTransact-SQL используется в качестве рабочей нагрузки. Он содержит события, которые будут происходить в базе данных MyDatabaseName. Большая часть вызовов оптимизатора запросов этой базы данных, которые будут производиться во время настройки, обрабатываются базой данных оболочки на сервере MyTestServerName. База данных оболочки состоит из метаданных и статистики. В результате этого настроечная нагрузка переносится на тестовый сервер. Когда помощник по настройке ядра СУБД создает рекомендацию по настройке с помощью этого входного XML-файла, он должен учитывать только индексы (<FeatureSet>IDX</FeatureSet>), не секционировать и не содержать ни одной из существующих физических структур проектирования.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>  

См. также

Рекомендации по использованию тестовых серверов
Справочник по входным файлам XML (помощник по настройке ядра СУБД)