Книга: Настольная книга 1С:Эксперта по технологическим вопросам
Назад: Очистка процедурного кеша (кеша планов)
Дальше: Реиндексация таблиц базы

Дефрагментация индексов

В разделе, посвященном общему списку регламентных работ («Теория», раздел ), не упоминается дефрагментация индексов, поскольку там указывается ежедневное выполнение реиндексации базы, а после реиндексации необходимость делать дефрагментацию индексов отпадает.

Тем не менее реиндексация – это операция, почти не позволяющая во время ее выполнения кому-то еще полноценно работать (реиндексация таблиц блокирует их на все время своей работы). А дефрагментация индексов не блокирует таблицы, а только создает дополнительную нагрузку на SQL Server. Поэтому если нет возможности ежедневно выполнять реиндексацию, то следует делать по крайней мере дефрагментацию индексов.

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

Дефрагментация всех индексов всех таблиц базы данных выполняется путем запуска SQL-запроса (в нем необходимо указать имя базы):

sp_msforeachtable N'DBCC INDEXDEFRAG (имя базы данных>, ''?'')'

При необходимости также можно проводить дефрагментацию не для всех таблиц, а только для некоторых.

Чтобы дефрагментация индексов выполнялась по расписанию автоматически, нужно сделать следующее:

  1. В ранее созданный план обслуживания (он у нас назывался «MaintenancePlan» или «Регламентные операции») добавить новый вложенный план (Subplan).
  2. Задать ему имя, например «Дефрагментация индексов» и расписание.
  3. На поле этого вложенного плана надо перетащить задачу Reorganize Index Task («Реорганизация индекса»).
  4. Открыть свойства задачи двойным щелчком, при необходимости в поле Database(s) («Базы данных») отметить нужные базы, остальные поля настроить, как показано на рис. 4.4.2:

Рис. 4.4.2. Настройка свойств задачи дефрагментации индексов

  1. Сохранить задачу, нажав ОК.
  2. Сохранить план, например в меню Файл выбрав Сохранить выбранные элементы.
  3. Убедиться, что задача выполняется.
Назад: Очистка процедурного кеша (кеша планов)
Дальше: Реиндексация таблиц базы