Профиль SQL и DTA

Вот сценарий:

Я провел трассировку в течение нескольких часов при максимальной загрузке сервера, используя три события (не говоря уже об этом), которые ищет DTA. Затем я останавливаюсь и подаю эту загрузку профилировщика в DTA. Он выполняет настройку и дает мне обратную связь о том, какие индексы нужно поставить.

Вот вопрос:

Несколько (до 15) различных рекомендаций по индексам для одной таблицы. Если я позволю DTA выполнять свою работу, значит ли это, что для этого будет создано несколько индексов? Не будет ли это проблемой?

4 ответа

Решение

Оптимизация сервера SQL является сложной и сильно зависит от данных в вашей базе данных. Единственный реальный способ определить, какие изменения коснутся изменений, - это выполнить тестирование производительности и нагрузку на вашу базу данных, используя репрезентативные данные (предпочтительно резервную копию вашей активной базы данных)

Тем не менее, мне кажется, что 15 индексов очень много - большое количество индексов может оказать негативное влияние на скорость записи в эту таблицу. DTA, вероятно, выполнял каждый запрос к этой таблице индивидуально и подбирал оптимальные индексы для каждого запроса. Вы, вероятно, обнаружите, что можно восстановить количество индексов путем создания индексов, подходящих для нескольких запросов - это может означать, что некоторые запросы немного медленнее, чем со всеми 15 индексами, однако есть вероятность, что вы сможете получить 99% улучшение.

DTA делает разумное во многих обстоятельствах, но не всегда дает оптимальные рекомендации. Перекрытия довольно распространены, так же как и дублирование кластеризованного индекса в виде некластеризованного индекса (!).

Если вы хотите сделать это более точно вручную: MS SQL Server 2008 - Как я могу войти и найти самые дорогие запросы?

Не зная больше о таблицах, запросах или индексах, ответ должен быть "это зависит"...

Вам нужно взять вывод из DTA в качестве отправной точки. Если вы посмотрите на рекомендуемые индексы, вы можете обнаружить, что между ними есть некоторое перекрытие, чтобы уменьшить количество индексов.

15 индексов кажутся много для одной таблицы. Я бы посмотрел на сами запросы, которые выполняются против него.

Ищите места, где изменения в структуре запроса будут работать для всех существующих индексов или небольшого подмножества предлагаемых индексов.

Другие вопросы по тегам