Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Добрый день.. С помощью sys.dm_db_missing_index_details определяю, что для таблицы не хватает индекса по двум полям.. В таблице есть индекс по этим двум полям, делаю запрос к таблице и по плану вижу, что этот индекс используется.. Как определить, почему предлагается создать этот индекс, или каким запросам этот индекс необходим, или почему существующий индекс не используется?
7 окт 11, 11:49    [11400740]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
или почему существующий индекс не используется


А Вы проверили по sys.dm_db_index_usage_stats, что индекс не используется?

ЗЫ. Рекомендации sys.dm_db_missing_index_details следует принимать взвешенно?
7 окт 11, 11:51    [11400780]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
pkarklin
ЗЫ. Рекомендации sys.dm_db_missing_index_details следует принимать взвешенно

а бывали случаи, что этот помощник советовал что-то явно вредное для базы? и в чем там дело оказалось
7 окт 11, 11:56    [11400830]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А там случаем он не предлагает кроме ключевых ещё и включенные столбцы?
7 окт 11, 11:59    [11400861]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
Glory
Member

Откуда:
Сообщений: 104751
temp-for-testing
Как определить, почему предлагается создать этот индекс, или каким запросам этот индекс необходим, или почему существующий индекс не используется?

Например
The missing index feature has the following limitations:

It is not intended to fine tune an indexing configuration.
It cannot gather statistics for more than 500 missing index groups.
It does not specify an order for columns to be used in an index.
For queries involving only inequality predicates, it returns less accurate cost information.
It reports only include columns for some queries, so index key columns must be manually selected.
It returns only raw information about columns on which indexes might be missing.
It does not suggest filtered indexes.
It can return different costs for the same missing index group that appears multiple times in XML Showplans.
It does not consider trivial query plans.
7 окт 11, 12:06    [11400950]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

проверил.. индекс используется.. user_seeks = 543 (это с учетом того, что ночью сервер перегружался)

tpg,

нет, никаких включенных столбцов.. только индекс по двум столбцам


может ли на это влиять то, что в таблице есть два индекса?

Поле1, Поле2
Поле2, Поле1

предлагает создать один из них, причем оба существующих индекса используются
7 окт 11, 12:07    [11400955]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
temp-for-testing,

У меня бывало на 2005 такое, что рекомендовался уже существующий индекс. Обычно помогало сделать ему REBUILD, причем лучше в оффлайн-режиме.
7 окт 11, 12:13    [11401022]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
temp-for-testing,

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

в представления sys.dm_db_missing_index_details значения возможных операций поиска по нему увеличивается?
7 окт 11, 12:15    [11401050]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Glory,

It does not specify an order for columns to be used in an index.


так есть два индекса с обоими вариантами порядка столбцов..

It does not suggest filtered indexes.


существующие индексы не фильтрующие.. обычные индексы по двум полям
7 окт 11, 12:25    [11401152]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Ennor Tiegael,

сегодня ночью делался rebuild индексов

Slava_Nik,

индексы созданы давно. и статистика обновлялась ночью.. насчет значений возможных операций поиска сейчас понаблюдаю
7 окт 11, 12:36    [11401274]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Slava_Nik,

проверил, значения увеличились.. как и значения используемости существующих индексов
7 окт 11, 12:53    [11401432]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing
pkarklin,

проверил.. индекс используется.. user_seeks = 543 (это с учетом того, что ночью сервер перегружался)


Само по себе занчение этого поля малоинформативно. Неплохо бы его сравнить с user_updates.
7 окт 11, 13:04    [11401508]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

user updates было 637, сейчас 747.. user seeks сейчас 684
7 окт 11, 13:07    [11401526]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing
user updates было 637, сейчас 747.. user seeks сейчас 684


Очень даже неплохо.
7 окт 11, 13:14    [11401588]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

а что именно неплохо? что это означает?
7 окт 11, 13:16    [11401604]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing,

Плохо, когда отношение user_updates к user_seeks очень велико, т.е. индекс чаще меняется (доп. накладные расходы), чем используется.
7 окт 11, 13:20    [11401657]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

а, так вот в другом индексе, в котором поля в другом порядке, там вообще user_seeks = 38316..

а в предлагаемом для создания индексе user_seeks увеличилось с 632 до 721.. странно, ведь такой же существующий индекс используется
7 окт 11, 13:26    [11401720]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing
а, так вот в другом индексе, в котором поля в другом порядке, там вообще user_seeks = 38316..


Вообще здорово. Просто запросов, использующих этот индекс скорее всего больше.
7 окт 11, 13:32    [11401771]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

это понятно.. а как выяснить, почему есть запросы, которые используют индекс Поле1,Поле2, и есть запросы, которые не используют этот индекс и из-за которых предлагается создать такой же индекс?
7 окт 11, 13:47    [11401924]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing,

Если sys.dm_db_missing_index_details есть указания на нехватку индекса, не факт, что он реально нужен.
7 окт 11, 13:54    [11401991]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

а как можно убедиться в этом?
7 окт 11, 14:05    [11402083]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
temp-for-testing,

IMHO, Вы не стой стороны заходите. Надо исходить из "проблемных" запросов, а не от предположений sys.dm_db_missing_index_details.
7 окт 11, 14:16    [11402178]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
pkarklin,

я начал искать отсутствующие индексы после того, как обнаружил, что в работе с дисками происходит ооочень много чтения с диска и очень мало записи.. после того, как я начал добавлять индексы по sys.dm_db_missing_index_details, чтение с диска заметно уменьшилось (хотя все равно оно намного больше записи).. это неправильный подход?
7 окт 11, 14:22    [11402237]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
iljy
Member

Откуда:
Сообщений: 8711
temp-for-testing,

это подход из серии "по колесам постучал". Найдите запросы с высоким IO и оптимизируйте уже конкретно их.
7 окт 11, 14:28    [11402296]     Ответить | Цитировать Сообщить модератору
 Re: как узнать, каким запросам не хватает индекса?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
iljy,

понятно.. спасибо.. но ведь у меня может быть 100 штук разных запросов с не очень высоким IO, которые я пропущу, но которые все вместе в сумме будут давать существенную нагрузку на диск опять же потому что в какой-то таблице, которая в этих запросах используется, нет индекса и из-за этого каждый раз происходит полное сканирование.. как такие ситуации отлавливать? насколько я понял, sys.dm_db_missing_index_details как раз для таких случаев и предназначена..
7 окт 11, 14:37    [11402397]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить