Когда следует вести индекс - Анализ использования индексов в SQL Server 2008 - PullRequest
9 голосов
/ 31 августа 2010

Я делаю отчет по индексу для моей базы данных MS SQL 2008 (щелчок правой кнопкой мыши по базе данных -> Отчеты -> Статистика использования индекса)

Он сообщает, что один из моих индексов использует: 88 пользователь ищет 0 пользователясканирует 6,134,141 пользовательских обновлений

Может кто-нибудь объяснить мне:

  1. В чем разница между поиском пользователя и сканированием пользователя?
  2. Как определить, когда вести индекс или отбрасывать его, в зависимости от того, ищет ли пользователь + пользовательские обновления или пользовательские обновления?

Я думаю, что в этом случае стоимость обслуживания индекса не стоит.

Ответы [ 2 ]

7 голосов
/ 31 августа 2010
  1. Вот хорошая статья , которая переходит ищет и сканирует (и индексы в целом). Будет вероятно, делать лучше, чем любой SO почта.
  2. Это может быть чем-то вроде искусства определить, нужен ли вам Индекс или нет. Если эти 88 ищет принимать абсолютно необходимые отчеты запросы от времени выполнения 3 часа до 30 секунд, затем сохраните их. Я думаю, что первым шагом было бы выяснить, какие запросы используют их, насколько индексы помогают этим запросам и насколько важны эти запросы.

Snipit из статьи (обязательно прочитайте):

Сканы

Сканирование индекса - это полное чтение всех конечных страниц в индексе. Когда сканирование индекса выполняется по кластерному индексу, это сканирование таблицы по всем именам, кроме имени.

Когда сканирование индекса выполняется обработчиком запросов, это всегда полное чтение всех конечных страниц в индексе, независимо от того, все ли строки возвращены. Это никогда не частичное сканирование.

Сканирование включает не только чтение конечных уровней индекса, страницы более высокого уровня также считываются как часть сканирования индекса.

Стремится

Поиск по индексу - это операция, в которой SQL использует структуру b-дерева для определения либо определенного значения, либо начала диапазона значений. Чтобы поиск индекса был возможен, в запросе должен быть указан предикат SARGable3 и совпадающий (или частично совпадающий) индекс. Соответствующий индекс - это индекс, в котором предикат запроса использовал левое подмножество столбцов индекса. Это будет рассмотрено более подробно в части 3 этой серии.

Операция поиска оценивается, начиная с корневой страницы. Используя строки в корневой странице, обработчик запросов определит, какая страница на следующем нижнем уровне индекса содержит первую искомую строку. Затем он будет читать эту страницу. Если это конечный уровень индекса, поиск на этом заканчивается. Если это не лист, то обработчик запросов снова определяет, какая страница следующего нижнего уровня содержит указанное значение. Этот процесс продолжается до достижения уровня листа.

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

2 голосов
/ 31 августа 2010

Один важный момент, на который стоит обратить внимание: статистика использования индекса сбрасывается при каждом запуске базы данных. Таким образом, трудно оценить ваши 88 запросов, не зная, когда вы в последний раз перезапускали. 88 поисков за последний час сильно отличается от 88 поисков за последний месяц.

  1. Пользователь ищет, ищет определенную строку или набор строк в индексе, которые соответствуют критериям вашего запроса. Сканирование пользователя читает все строки в индексе. По понятным причинам операции поиска предпочтительнее операций сканирования.
  2. Мне не известны какие-либо общие рекомендации, в которых говорится, что «когда коэффициент поиска / обновления равен X, отбросьте индекс». Посмотрите на ваш индекс с точки зрения этих Общих принципов проектирования и сравнительного анализа до и после выполнения ваших запросов, чтобы определить влияние удаления индекса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...