04.06.2010, 10:29 | #1 |
Модератор
|
SQL Server 2005, 2008: Создание недостающих индексов
SQL Server 2005, 2008: Создание недостающих индексов
Оригинал статьи: http://itband.ru/2009/07/sql-server-...dex/#more-1872 В SQL Server начиная с версии 2005 есть функция отсутствующих индексов, которая использует объекты DMO и классы событий Showplan для получения сведений об отсутствующих индексах, благодаря которым можно повысить производительность обработки запросов в SQL Server. А как получить эти сведения, обработать и принять решение о необходимости создания тех или иных индексов? Интересная методика представлена в Учебном курсе Microsoft “SQL Server 2005 Реализация и обслуживание”. Решение о эффективности индекса предлагается принять из расчета некоторого значения по формуле user_seeks * avg_total_user_cost * (avg_user_impact * 0.01). Исходные данные для расчета берутся из представлений sys.dm_db_missing_index*. Значение выше 5000 в промышленных системах означает, что следует рассмотреть возможность создания этих индексов. Если же значение превышает 10000, это обычно означает, что индекс может обеспечить значительное повышение производительности для операций чтения. Немного творчества и получаем вот такой скрипт: PHP код:
Можно создать JOB на основе этого скрипта и выполнять его периодически. Если скрипт выявит необходимость создать какой либо индекс, то он сообщит Вам об этом, послав электронное письмо (компонент Database Mail должен быть включен и настроен). Отмечу также, что если приложение само управляет объектами базы данных, то и индексы следует создавать через функционал данного приложения. Пример такого приложения – Microsoft Dynamics AX. Илгиз Мамышев
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Maximin (1), sukhanchik (4), lev (3), zZ_TOP_Zz (1), imir (0). |
04.06.2010, 10:34 | #2 |
MCTS
|
В SQL 2008 есть инструмент database tuning advisor, которому можно дать трассировку профайлера или SQL запрос на вход, и он выдаст, какие индексы нужно добавить.
__________________
I could tell you, but then I would have to bill you. |
|
04.06.2010, 10:42 | #3 |
Модератор
|
Цитата:
Database tuning advisor анализирует лог профайлера, а данная статья описывает вариант с индексами на основе статистики. Не приятно, что Аксапта все переделает после синхронизации Так что правим индексы в самой аксе. Может у кого будет желание рассказать свой опыт оптимизации индексов, рад был бы почитать.
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 04.06.2010 в 10:44. |
|
04.06.2010, 13:05 | #4 |
Модератор
|
Рекомендовал бы для скрипта строку:
PHP код:
PHP код:
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 04.06.2010 в 13:16. |
|
04.06.2010, 14:19 | #5 |
Участник
|
Вот блог, в котором приводился код этого скрипта, там кстати много еще полезной инфы:
http://msmvps.com/blogs/gladchenko/ |
|
05.06.2010, 01:05 | #6 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: Poleax (1). |
05.06.2010, 01:28 | #7 |
Сенбернар
|
Ужас... Создание Недостающих Индексов...
Это оно само - за Вас - решает? Я бы поостерегся
__________________
Best Regards, Roman |
|
Теги |
index, performance, sql |
|
|