AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.02.2014, 15:07   #1  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
В большинстве случаев в коде индекс упомянут и не должен быть, а значит и перекрестными ссылками он не найдется. SQL Server сам решает, какой из индексов надо использовать.

Статистику использования индексов можно посмотреть во вьюшке sys.dm_db_index_usage_stats. Отсюда можно определить и выключить реально неиспользуемые индексы.
http://technet.microsoft.com/en-us/l.../ms188755.aspx

Еще есть полезная вьюшка sys.dm_db_index_operational_stats.
http://msdn.microsoft.com/en-us/library/ms174281.aspx

О различиях между ними тут: http://blogs.msdn.com/b/craigfr/arch...nal-stats.aspx
За это сообщение автора поблагодарили: mazzy (5), sukhanchik (4), Logger (10), lev (5), Link (4), gl00mie (5), alex55 (1).
Старый 04.02.2014, 15:31   #2  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от oip Посмотреть сообщение
В большинстве случаев в коде индекс упомянут и не должен быть, а значит и перекрестными ссылками он не найдется. SQL Server сам решает, какой из индексов надо использовать.

Статистику использования индексов можно посмотреть во вьюшке sys.dm_db_index_usage_stats. Отсюда можно определить и выключить реально неиспользуемые индексы.
http://technet.microsoft.com/en-us/l.../ms188755.aspx

Еще есть полезная вьюшка sys.dm_db_index_operational_stats.
http://msdn.microsoft.com/en-us/library/ms174281.aspx

О различиях между ними тут: http://blogs.msdn.com/b/craigfr/arch...nal-stats.aspx
Спасибо за конструктив, понял куда копать!
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: leva (1).
Старый 04.02.2014, 17:16   #3  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
Готовый запрос
Этот запрос возвращает список индексов, которые никогда не использовались в планах исполнения запросов,
и показывает число изменений на страницах каждого такого индекса. Вы можете найти не только индексы,
которые лежат в базе данных мёртвым грузом, но и те индексы,
которые за счёт большого числа изменений приносят только вред
(в виде затрат на изменения значений ключей индекса).

X++:
SELECT   OBJECT_NAME(i.object_id) AS [Table Name],
         i.name AS [Not Used Index Name],
         s.last_user_update AS [Last Update Time],
         s.user_updates AS [Updates]
FROM     sys.dm_db_index_usage_stats AS s
JOIN     sys.indexes AS i
ON       i.object_id = s.object_id
AND      i.index_id = s.index_id
JOIN     sys.objects AS o
ON       o.object_id = s.object_id
WHERE    s.database_id = DB_ID()
AND      (    user_scans   = 0
          AND user_seeks   = 0
          AND user_lookups = 0
          AND last_user_scan   IS NULL
          AND last_user_seek   IS NULL
          AND last_user_lookup IS NULL 
         )
AND      OBJECTPROPERTY(i.[object_id],         'IsSystemTable'   ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsAutoStatistics') = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsHypothetical'  ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsStatistics'    ) = 0
AND      INDEXPROPERTY (i.[object_id], i.name, 'IsFulltextKey'   ) = 0
AND      (i.index_id between 2 AND 250 OR (i.index_id=1 AND OBJECTPROPERTY(i.[object_id],'IsView')=1))
AND      o.type <> 'IT'
--ORDER BY OBJECT_NAME(i.object_id) 
order by [Updates] desc
если будете удалять индексы - следите за TransactionLog-ом. Индекс удаляется в транзакции и лог может запросто вырасти в разы, если удалить сразу несколько больших индексов (это актуально только есть ограничения на размер лога).

Последний раз редактировалось AlexeyS; 04.02.2014 в 17:21.
За это сообщение автора поблагодарили: mazzy (5), Logger (3), Link (4), Kabardian (6).
Старый 04.02.2014, 18:18   #4  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от AlexeyS Посмотреть сообщение
Этот запрос возвращает список индексов, которые никогда не использовались в планах исполнения запросов,
и показывает число изменений на страницах каждого такого индекса. Вы можете найти не только индексы,
которые лежат в базе данных мёртвым грузом, но и те индексы,
которые за счёт большого числа изменений приносят только вред
(в виде затрат на изменения значений ключей индекса).
Спасибо, нашел похожий запрос здесь.

Цитата:
Сообщение от AlexeyS Посмотреть сообщение
если будете удалять индексы - следите за TransactionLog-ом. Индекс удаляется в транзакции и лог может запросто вырасти в разы, если удалить сразу несколько больших индексов (это актуально только есть ограничения на размер лога).
Очень полезное замечание, у нас как раз очень огромные индексы, собственно больше половины всей базы занимают индексы. Недавно перезапускали Сиквел, так что теперь придется ждать пока статистика накопится.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 06.02.2014, 14:18   #5  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Еще один вопрос назрел по теме. Перешел я к анализу, но сомневаюсь можно ли полагаться на статистику, если очень много индексов имеют сильную фрагментацию. Подозреваю, что можно, но все же хочется уточнить. Базой никто не занимался, поэтому больше тысячи индексов имеют фрагментацию от 30 до 99%.

Еще может кому будет полезно, в сиквеле (2008) уже есть встроенный отчеты по статистике индексов, то о чем выше писал уважаемый oip. Запустил, сохранил в эксель и можно анализировать. Очень удобно, особенно в сильно запущенных случаях. Так же в отчете (Service Dashboard) можно посмотреть дату перезапуска службы.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 06.02.2014, 14:48   #6  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Вот что пишут:
Код:
 When an Index Logical Scan Fragmentation exceeds 50%, SQL will ignore the Statistics recommendations and perform a Table Scan instead.
Получается, что нельзя полагаться на статистику по индексу, если фрагментация больше 50%?
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Теги
sql server, администратор бд, анализ, индекс, производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
позволяют ли стандартные классы Аксапты проводить валидацию XML? (XMLTextReader, XMLSchema и т п) Cardagant DAX: Программирование 1 15.03.2013 00:24
Стандартные затраты и Отборочная накладная Димитрий DAX: Программирование 0 31.05.2012 09:40
Как часто вы кастомизируете стандартные сервисы номенклатур. Ievgenii DAX: Функционал 8 14.12.2009 13:35
Перестали работать индексы в запросах Antant DAX: Администрирование 2 03.08.2009 19:01
При каждом обращении строит индексы в Old nicko DAX: Администрирование 0 16.02.2005 08:57
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:30.