Использование входного XML-файла для настройки

Все операции по настройке параметров, которые выполняются при помощи графического интерфейса помощника по настройке Database Engine и программы командной строки dta, могут быть определены во входном XML-файле помощника по настройке Database Engine. Для этих файлов поддерживаются также дополнительные параметры, которые недоступны в графическом интерфейсе и программе командной строки.

Входной XML-файл использует опубликованную XML-схему помощника по настройке Database Engine, которую можно найти в следующем установочном каталоге SQL Server 2008:

C:\Program Files\Microsoft SQL Server\10\Tools\Binn\schemas\sqlserver\2004\07\dta\dtaschema.xsd

Ее также можно загрузить по следующему URL-адресу

https://schemas.microsoft.com/sqlserver/2004/07/dta

Входной XML-файл позволяет пользоваться привычными средствами редактирования XML и предоставляет опытному администратору большую гибкость при настройке базы данных. В частности, использование входного XML-файла позволит создавать конфигурации, сочетающие существующие и гипотетические физические структуры (индексы, индексированные представления, секции). Затем можно при помощи программы командной строки dta настроить базу данных так, как если бы гипотетическая часть физических структур была реализована. Это позволяет производить анализ гипотетических вариантов, не обременяя себя затратами, связанными с реализацией физической конфигурации.

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

Определение конфигураций элементом Configuration

Хотя пользовательская настройка в ограниченном объеме может быть выполнена и при помощи графического интерфейса помощника по настройке Database Engine, все ее возможности доступны только при передаче входного XML-файла программе командной строки dta. Во входном XML-файле может быть указана либо полностью гипотетическая конфигурация, либо конфигурация, которая содержит сочетание гипотетических и реальных физических структур. Затем, после проверки входного файла на соответствие XML-схеме помощника по настройке Database Engine, его можно передать программе командной строки dta. Во время сеанса настройки помощник по настройке Database Engine воспроизводит на базах данных указанную рабочую нагрузку. Однако помощник по настройке Database Engine не вычисляет существующую конфигурацию индексов, индексированных представлений и секций. Вместо этого он пользуется конфигурацией, которая представляет из себя комбинацию гипотетических и реальных структур. Использование гипотетических структур позволяет проанализировать то, каким образом конкретная конфигурация скажется на производительности базы данных, не тратя время на реализацию реальной конфигурации.

Для определения конфигурации, содержащей реальные и гипотетические физические структуры, воспользуйтесь элементом Configuration, вложенным в элемент TuningOptions во входном XML-файле помощника по настройке Database Engine. Дополнительные сведения см. в разделах Как выполнять исследовательский анализ и Образец входного XML-файла с пользовательской конфигурацией (DTA).

Настройка встроенных рабочих нагрузок в элементе EventString

При использовании входного XML-файла помощника по настройке Database Engine есть возможность полностью избежать указания файла рабочей нагрузки. Вместо этого можно указать рабочую нагрузку и ее вес внутри входного XML-файла. Необязательность использования отдельного файла или таблицы рабочей нагрузки дает следующие преимущества.

  • Позволяет более эффективно настраивать удаленные серверы, поскольку исключает необходимость иметь отдельный файл или таблицу рабочей нагрузки для запуска помощника по настройке Database Engine.

  • Упрощает включение функций помощника по настройке Database Engine в файлы сценариев, переносимые в другие промышленные среды.

Для определения встроенной рабочей нагрузки укажите вложенный элемент EventString, для которого также может быть указан вес нагрузки. Этот элемент помещается внутри элемента Workload вместо указания файла или таблицы рабочей нагрузки. Приведенные ниже примеры кода показывают, как пользоваться элементом EventString во входном XML-файле в сравнении с использованием стандартного файла рабочей нагрузки.

Примеры

А. Указание отдельного файла рабочей нагрузки в элементе Workload

<DTAInput>
...code removed
  <Workload>
    <File>MyWorkload.sql</File>
  </Workload>
...code removed
</DTAInput>

Б. Указание встроенной рабочей нагрузки в элементе EventString

<DTAInput>
...code removed
  <Workload>
    <EventString Weight="100">
     SELECT * FROM MyTable1
     WHERE MyColumn1 &gt; 200
     ORDER BY MyColumn1
    </EventString>
    <EventString Weight="1">
     SELECT * FROM MyTable2
     WHERE MyColumn2 &gt; 200
     ORDER BY MyColumn2
    </EventString>
  </Workload>
...code removed
</DTAInput>

В предыдущем примере для различных запросов в элементе EventString указываются разные веса нагрузки: вес 100 и вес 1. Это означает, что, когда помощник по настройке Database Engine настраивает эти запросы, приложение трактует запрос с весом 100 так, как если бы выполнялось 100 экземпляров этого запроса по сравнению с одним экземпляром запроса с весом 1. В приведенном выше примере первое значение для помощника по настройке Database Engine в 100 раз важнее, чем второе. Обратите также внимание, что символ «больше» (>) преобразуется в &gt, так как «>» является зарезервированным символом, имеющим в XML специальное значение.

Пример указания встроенной рабочей нагрузки в элементе EventString см. в разделе Образец входного XML-файла с описанием встроенной рабочей нагрузки (DTA).

Пропуск констант в рабочих нагрузках с помощью элемента IgnoreConstantsInWorkload

Рабочие нагрузки могут содержать инструкции, которые ссылаются на константы. Помощник по настройке компонента Database Engine может использовать в рабочей нагрузке константы для создания рекомендаций, которые содержат индексированные представления с условиями выборки или диапазон функций секционирования для секционированных индексов.

Однако иногда возможность использования констант в рабочих нагрузках может быть не нужна для помощника по настройке компонента Database Engine. Например, рассмотрим рабочую нагрузку, содержащую следующую инструкцию:

UPDATE BankAccountTable
SET AccountBalance = AccountBalance - 1000.00
WHERE CustomerID = 
       (SELECT CustomerID FROM Customer WHERE CustomerName = 'Alice')

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

Элемент IgnoreConstantsInWorkload, находящийся в элементе TuningOptions, может быть указан во входном XML-файле, чтобы заставить помощник по настройке компонента Database Engine пропускать все константы в рабочей нагрузке. Если этот элемент указан, индексированные представления, которые может рекомендовать помощник по настройке компонента ядра СУБД, не будут содержать условий выборки. Кроме того, константы, используемые в функциях секционирования, могут быть получены только из данных, а не из констант, содержащихся в рабочей нагрузке.

Настройка рабочей нагрузки для рабочего сервера на тестовом сервере

Настройка большой рабочей нагрузки может привести к значительной нагрузке на настраиваемом сервере из-за большого количества обращений помощника по настройке Database Engine к оптимизатору запросов, производимых во время выполнения настройки. Чтобы решить эту проблему, производите настройку на рабочем сервере. Помощник по настройке Database Engine реализует этот сценарий оригинальным способом.

  1. Убедитесь, что пользователь, который собирается выполнять настройку, существует и на рабочем, и на тестовом сервере. Если вы являетесь членом предопределенной роли сервера sysadmin, этот шаг можно пропустить.

  2. Укажите тестовый сервер для настройки во входном XML-файле вместе с остальными параметрами, определяющими сеанс настройки.

  3. Запустите сеанс настройки программой командной строки dta и начните анализ рабочей нагрузки.

Во время сеанса настройки тестового сервера помощник по настройке Database Engine сводит к минимуму обращения к рабочему серверу, получая от него только сведения о профиле оборудования, метаданные и статистики из базы данных, что необходимо для точной оптимизации запросов на тестовом сервере.

В этом сценарии фактически настраивается тестовый сервер, который дублирует среду рабочего сервера. После того как по результатам настройки тестового сервера получены рекомендации по конфигурации базы данных, их можно реализовать на рабочем сервере во время очередного планового обслуживания. Такой способ минимизирует нагрузку, создаваемую помощником по настройке Database Engine. Кроме того, данная процедура экономит время за счет невыполнения копирования данных с рабочего сервера на тестовый и снижает расходы, связанные с необходимостью дублирования мощного оборудования рабочего сервера для тестовой среды.

Тестовый сервер можно указать в элементе TestServer, вложенном в элемент TuningOptions, как показано в следующем примере:

Пример

<DTAInput>
...code removed
  <TuningOptions>
    <TestServer>MyTestServer</TestServer>
    <FeatureSet>IDX_IV</FeatureSet>
    <Partitioning>NONE</Partitioning>
    <KeepExisting>NONE</KeepExisting>
  </TuningOptions>
...code removed
</DTAInput>

Дополнительные сведения об использовании этой возможности и примеры см. в разделе Уменьшение настроечной загрузки рабочего сервера.

См. также

Другие ресурсы