Обслуживание баз данных

Компонент SQL Server Database Engine автоматически поддерживает состояние индексов при выполнении операций вставки, обновления или удаления в отношении базовых данных. Со временем эти изменения могут привести к тому, что данные в индексе окажутся "разбросанными" по базе данных (фрагментированными). Фрагментация индексов негативно сказывается на скорость обработки данных.

Для дефрагментации данных, обновления статистики и оптимизации лога предлагаем воспользоваться готовыми скриптами, которые вы можете включить в ежедневный план обслуживания вашего сервера баз данных.

При необходимости создайте регламентное задание в SQL Server Configuration Manager и произведите настройки его расписания, например, ежедневное в 03:00:00.

Скачайте три файла и запустите их в окне SQL Management Studio в следующем порядке:

  1. IndexOptimize.sql

  2. CommandExecute.sql

  3. LogOptimize.sql

В базе данных [master] в разделе пользовательских хранимых процедур появятся соответствующие процедуры.

Для дефрагментации и обновления статистики в нужной базе данных выполните следующий код в SQL Management Studio

EXEC dbo.IndexOptimize @Databases = N'ИМЯ ВАШЕЙ БАЗЫ ДАННЫХ',
                       @UpdateStatistics = N'ALL';

или

EXEC dbo.IndexOptimize @Databases = N'ALL_DATABASES',
                       @UpdateStatistics = N'ALL';

для всех баз, размещенных на сервере.

В процессе выполнения в логе будет доступна информация о состоянии дефрагментируемых индексов и обновленных статистиках.

Для сжатия файла .log воспользуйтесь процедурой LogOptimize

Last updated