gifts2017

Скрипт SQL для оптимизации базы 1c

Опубликовал Елена Смирнова (smielka) в раздел Администрирование - Оптимизация БД (HighLoad)

Скрипт, помогающий создать нужные индексы, улучшающие работу базы 1С.

Для использования данного скрипта необходимо открыть SQL Qwery SQL Server Managment Studio у интересующей вас базы. И выполнить данный скрипт, который покажет каких индексов не хватает, это статистика собранная SQL Server. Следующий шаг необходимо в режиме конфигуратора 1С создать нужные индексы. 

- Не забудьте поправить сценарий создания индексов,
-- убрав лишние запятые или пустую инструкцию INCLUDE
SELECT OBJECT_NAME(d.object_id), [Рекомендуемый индекс]=
'-- CREATE INDEX [IX_' + OBJECT_NAME(d.object_id) + '_' +
CAST(d.index_handle AS nvarchar) + '] ON ' +
d.statement + ' (' + ISNULL(d.equality_columns,'') +
', ' + ISNULL(d.inequality_columns,'') +
') INCLUDE (' + ISNULL(d.included_columns,'') + ');',
[Число компиляций] = s.unique_compiles,
[Количество операций поиска] = s.user_seeks,
[Количество операций просмотра] = s.user_scans,
[Средняя стоимость ] = CAST(s.avg_total_user_cost AS int),
[Средний процент выигрыша] = CAST(s.avg_user_impact AS int)
FROM sys.dm_db_missing_index_groups g
JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle
JOIN sys.dm_db_missing_index_details d ON g.index_handle = d.index_handle
AND d.database_id = DB_ID()
order by /*1,*/ 7 desc, 6 desc

См. также

Подписаться Добавить вознаграждение
Комментарии
1. andrey dyak (dyak84) 23.07.13 17:24
Очень Интересно на выходних нада будет обязательно попробовать поколдовать над базой даних. Если чеого из етого выйдет обязательно отпишусь
2. Артано Майаров (Артано) 24.07.13 05:52
(1) Судя по коду скрипт считает количество обращений к тем или иным колонкам таблиц и сортирует необходимости индексирования. Было бы интересно сделать обработку выполняющую этот скрипт и выводящую не имена SQL-таблиц, а имена объектов метаданных
3. Vladimir K (KroVladS) 24.07.13 09:09
Спасибо.
Попробую на досуге.
4. DenisCh Гейтс (DenisCh) 24.07.13 09:20
(2) Артано, сделай (с) :-)
Все данные для этого есть. Кроме того, тут встречал года полтора-два назад подобное.
5. PV VP (vpaull) 25.07.13 20:11
Вот-с так с именами объектов метаданных.
В модуле формы в функции Подключение() надо поправить строку
cnn.connectionString = "SERVER=СЕРВЕРСКЛ; Database=ИМЯБАЗЫ; DRIVER=SQL Server; UID=ПОЛЬЗОВАТЕЛЬСКЛ; PWD=ПАРОЛЬСКЛ;";

Подставить соответствующие значения.

В обработке есть неучтенки по метаданным, но их легко можно добавить имея руки
На чистоту и бережность кода не претендую - сделано из интереса на коленке.
Прикрепленные файлы:
6. Елена Смирнова (smielka) 27.07.13 22:28
7. Артано Майаров (Артано) 31.07.13 08:13
(5) Поправил сортировку, добавил статистики
Прикрепленные файлы:
СтруктураИндексы.erf
lap_soft; dimisa; CratosX; +3 Ответить
8. isn Игнатьев (isn) 06.09.13 11:35
Для наглядности сформируйте отчет из разных баз данных на разных конфигурациях, чтобы показать целесообразность данной обработки.