Инструменты для идентификации необходимых индексов

8

Я хочу создать лучшие индексы для каждой таблицы в моей базе данных. Есть ли запрос или инструмент в SQL Server, чтобы помочь с этим процессом?

Мехди Лотфи
источник
1
Существуют предлагаемые индексы, но они очень ограничены и должны оцениваться кем-то, кто знает, что они делают. У вас есть конкретный вопрос об индексации?
JNK
1
Есть ли запрос / таблица с низкой производительностью? Как и предполагал JNK, вам следует добавлять индексы только тогда, когда вы знаете, что делаете (и проверяете это независимо). Если у вас нет оснований полагать, что таблице нужен индекс (огромная таблица, медленные запросы, очевидный кластеризованный индекс), вы не должны просто пытаться добавить их
Бен Брока

Ответы:

10

Да, есть такие инструменты, как советник по настройке ядра базы данных. Он поставляется с SQL Server и делает несколько неприятных вещей:

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

Надлежащий подход к настройке индексов заключается в рассмотрении всей вашей рабочей нагрузки в течение полного бизнес-цикла. Иногда лучше обратиться к сторонним инструментам, чем изобретать велосипед. DBSophic делает бесплатный продукт под названием Qure Workload Analyzer, который, я думаю, работает намного лучше, чем DTA, но их лицензионный инструмент (Qure Workload Optimizer) абсолютно феноменален в своих действиях. В прошлом году я писал о том, как работает этот инструмент при интеграции с SQL Sentry ).

Также есть некоторые другие опции, например, отсутствующие индексы сообщаются в DMV, и вы также можете узнать, в какие индексы записываются данные (поэтому они занимают место и влияют на операции вставки / обновления / удаления), но никогда (или редко). ) используется пользовательскими запросами:

Но они также нуждаются в предупреждении о том, что DMV действительны только с момента последнего перезапуска SQL Server, и что они не обязательно охватывают надлежащий бизнес-цикл (и, следовательно, могут пропустить важную информацию

Аарон Бертран
источник
7

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

Ссылка на учебник DTA

Стоит также отметить, что существуют встроенные DMV для сбора информации такого типа:

Томас Стрингер
источник