Базы данных. Несколько шагов до серьезного обслуживания
Практические примеры настройки обслуживания баз данных для SQL Server. Актуально для любых приложений.
- Описание
- Подробнее
Описание
Об этом много сказано
Тема обслуживани
я баз данных (индексов и статистик) поднимается достаточно часто в разных статьях, официальной документации, на форумах и так далее. Обычно дается описание процессов обслуживания, зачем они нужны и какие бывают, на что влияют. И, конечно же, как сделать настройку обслуживания. Последнее обычно преподносится на базовом уровне, но, конечно, не всегда.
Сегодня мы снова коснемся этой темы, но несколько в ином ключе. Мы на практических примерах посмотрим на настройку обслуживания от простого случая до более продвинутого. Так можно будет проследить как меняется обслуживание при изменении требований к работе информационной системы.
Мы сосредоточимся на решении именно практических задач. Теорию Вы можете найти по ссылкам в конце статьи.
Общие слова
Прежде чем мы перейдем к примерам, определимся с тем, что будем делать.
Обслуживание подразумевает две больших части:
- Поддержание фрагментации индексов на приемлемом уровне. В идеале процент фрагментации у каждого индекса должен быть равен 0 или близок к этому значению.
- Состояние статистики должно быть в максимально в актуальном состоянии. При изменении строк в таблице, объекты статистики должны иметь гистограмму распределения значений, которая отражает состояние объектов базы наиболее актуальным образом.

Все это влияет на формируемые планы запросов. В самых общих чертах, если индекс имеет высокую фрагментацию или статистика знатно устарела, то оптимизатор SQL Server даже не будет пытаться использовать индекс и выполнит полное сканирование таблицы. Последнее, как Вы понимаете, не самая быстрая и оптимальная ситуация. Есть и другие последствия отсутствия обслуживания, но это совсем другая история. Один из таких примеров был рассказан в статье "Обслуживание баз данных. Не так просто, как кажется".
Также сразу отметим, что никаких сторонних программ для настройки обслуживания мы использовать не будем. Чистый TSQL, возможно, в готовых скриптах и/или хранимых процедурах. Но никакого стороннего софта.
Итак, настало время первого примера!
Примеры, примеры, примеры
На старт, внимание, марш!
Типичное обслуживание
Когда речь заходит об обслуживании, то обычно начинают с создания плана обслуживания, где используют готовые компоненты. Для этого создаем план обслуживания через SQL Server Managment Studio в разделе "Managment -> Maintenance Plans" с субпланом "FullMaintenance".
Механизм планов обслуживания базируется на "обрезанной" версии SSIS, если так можно выразиться. Для использования готовых компонентов нужно использовать именно его.
Альтернативным вариантом является использование заданий (job’ов) агента SQL Server, просто указывая явно скрипты TSQL для выполнения.
В созданный субплан добавляем три компонента. Выше Вы уже могли видеть схему субплана обслуживания.
