Книга: Настольная книга 1С:Эксперта по технологическим вопросам
Назад: Дефрагментация индексов
Дальше: Контроль выполнения регламентных заданий

Реиндексация таблиц базы

Эту регламентную операцию можно выполнять как средствами конфигуратора «1С» (через «тестирование и исправление»), так и через запрос к СУБД. Результат будет точно такой же. Есть, однако, два соображения, по которым удобнее делать это средствами СУБД, когда речь идет о настройке регулярно выполняющихся действий:

  1. Если вы уже настраиваете план обслуживания базы средствами СУБД, включение в него еще одного вложенного плана займет менее полуминуты.
  2. Реиндексация средствами «1С» требует монопольного захвата базы, работа других пользователей невозможна. Реиндексация средствами СУБД не требует монопольного захвата. Поскольку она блокирует таблицы на все время своей работы, ее надо проводить во время минимальной активности пользователей. Но, например, чтение данных вне транзакций и другие ограниченные возможности остаются для пользователей доступными.

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

sp_msforeachtable N'DBCC DBREINDEX (''?'')'

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

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

Рис. 4.4.3. Настройка свойств задачи реиндексации

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