Администрирование · 10 мин
Слияние индекса ППД в 1С 8.3: что это и зачем выполнять
Что такое слияние индекса полнотекстового поиска данных в 1С 8.3, зачем оно нужно, как выполнить слияние вручную и настроить автоматическое обновление индекса.
Полнотекстовый поиск данных (ППД) в 1С 8.3 позволяет находить документы, элементы справочников и другие объекты по произвольному тексту — так же, как работает поиск в интернете. Чтобы поиск выполнялся быстро, платформа строит специальный индекс, который состоит из основной и дополнительной частей. Слияние индекса ППД — это операция объединения этих частей в единый оптимизированный индекс.
Когда пользователи создают или изменяют объекты, новые данные не сразу попадают в основной индекс — они накапливаются в дополнительном. Поиск при этом работает, но чем больше дополнительная часть, тем медленнее выполняются запросы и тем больше ресурсов расходуется на обход двух структур. Слияние переносит накопленные изменения в основной индекс и освобождает дополнительный.
Операция выполняется из раздела администрирования, программно через встроенный язык или автоматически регламентным заданием. Ниже разобрано, как устроен индекс, когда слияние действительно нужно, как его выполнить и каких ошибок стоит избегать.
Как устроен индекс полнотекстового поиска в 1С
Платформа 1С хранит индекс ППД в двух частях. Основной индекс содержит данные, обработанные при последнем полном обновлении или слиянии. Дополнительный индекс принимает все изменения, произошедшие после этого момента: новые документы, отредактированные элементы справочников, пометки удаления.
При выполнении поискового запроса платформа просматривает обе части и объединяет результаты. Пока дополнительный индекс мал, задержка незаметна. Но в активно используемой базе он растёт быстро: каждый проведённый документ и каждое изменение добавляют записи. Через несколько дней интенсивной работы поиск может заметно замедлиться.
Физически индекс размещается в каталоге информационной базы (для файлового режима) или на сервере СУБД в отдельных таблицах (для клиент-серверного режима). Размер индекса зависит от объёма текстовых данных в базе и может достигать значительной доли от размера самой базы.
Зачем нужно слияние индекса и когда его выполнять
Слияние решает три задачи. Во-первых, ускоряет поиск: запрос обрабатывается по одной оптимизированной структуре вместо двух. Во-вторых, уменьшает объём хранимых данных, поскольку при слиянии удаляются устаревшие записи об изменённых и удалённых объектах. В-третьих, снижает нагрузку на дисковую подсистему при поисковых запросах.
Ориентировочные признаки того, что слияние пора выполнить: поиск стал ощутимо медленнее, чем раньше; дополнительный индекс накапливался несколько дней при активной работе пользователей; в базе было массово загружено или изменено много объектов (например, после обмена данными или загрузки классификаторов).
На практике удобнее всего не отслеживать состояние вручную, а настроить регулярное автоматическое слияние — обычно раз в сутки в нерабочее время. Для баз с низкой активностью достаточно выполнять операцию раз в несколько дней или по мере необходимости.
Выполнить слияние и сравнить скорость поиска до и после
Проверить расписание регламентного задания обновления индекса
Проверить настройку в Администрирование → Поиск данных
Выполнить слияние, при необходимости — пересоздать индекс
Как выполнить слияние индекса вручную
Ручное слияние доступно пользователю с правами администратора. В типовых конфигурациях на управляемых формах путь выглядит так: раздел «Администрирование» → «Общие настройки» (или «Обслуживание») → «Поиск данных». В открывшейся форме доступны команды обновления индекса и слияния.
Нажмите «Обновить индекс» — платформа выполнит актуализацию и слияние за один проход. Дождитесь завершения операции: в больших базах она может занять от нескольких минут до часа и более. В это время поиск продолжает работать, но медленнее, а производительность базы может снизиться.
Если база файловая, слияние выполняется в монопольном или фоновом режиме в зависимости от настроек и версии платформы. В клиент-серверном варианте операция идёт на сервере и не блокирует работу пользователей, но создаёт нагрузку на СУБД.
- 1Откройте раздел Администрирование → Поиск данных (в некоторых конфигурациях — через Обслуживание)
- 2Убедитесь, что полнотекстовый поиск включён
- 3Нажмите «Обновить индекс» и подтвердите выполнение
- 4Дождитесь окончания операции — не закрывайте сеанс
- 5Проверьте поиск: новые и изменённые объекты должны находиться быстро
Автоматическое слияние регламентным заданием
В клиент-серверных базах и базах, опубликованных на веб-сервере, слияние удобно выполнять регламентным заданием «Слияние индексов полнотекстового поиска» (в типовых конфигурациях оно называется «СлияниеИндексовПолнотекстовогоПоиска» или входит в состав обработки обновления индекса). Задание включается в консоли заданий или в разделе «Регламентные и фоновые задания».
Рекомендуемая схема: обновление индекса — часто (например, каждые 30–60 минут или чаще при высокой интенсивности ввода данных), слияние — редко (раз в сутки ночью). Такой режим обеспечивает актуальность поиска днём и оптимизацию индекса в период минимальной нагрузки.
Проверьте, что задание не заблокировано и выполняется без ошибок: в журнале регистрации видны события его запуска и завершения. Если задание завершается с ошибкой, поиск постепенно деградирует, хотя внешне всё выглядит включённым.
// Программное слияние индекса ППД
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Истина);
// Первый параметр — обновить индекс,
// второй — выполнить слияние основного и дополнительного индексовСлияние, обновление и пересоздание индекса: в чём разница
Эти три операции часто путают, хотя они решают разные задачи. Обновление индекса добавляет в дополнительную часть данные об объектах, изменённых с момента последнего обновления. Это быстрая операция, которую можно выполнять часто.
Слияние объединяет дополнительный индекс с основным. Оно занимает больше времени, но оптимизирует структуру и ускоряет поиск. Полное пересоздание индекса строит его заново с нуля — самая длительная операция, нужная только при повреждении индекса, изменении состава индексируемых метаданных или серьёзных проблемах с поиском.
Выбор операции
Подходит для регулярной актуализации поиска; быстрое, можно запускать каждый час. Не оптимизирует структуру
Для периодической оптимизации — обычно раз в сутки. Ускоряет поиск и сокращает объём индекса
Только при повреждении индекса или изменении состава индексируемых объектов. Долгое, требует окна обслуживания
Риски, ограничения и типичные ошибки
Слияние — ресурсоёмкая операция. На больших базах она создаёт заметную нагрузку на дисковую подсистему и процессор, поэтому запускать её в разгар рабочего дня не стоит. Планируйте операцию на ночь или на период минимальной активности пользователей.
Прерывание слияния (отключение питания, перезапуск сервера, разрыв сеанса) обычно не разрушает индекс, но операцию придётся начинать заново. Если после аварийного прерывания поиск работает некорректно, выполните полное пересоздание индекса.
Отдельная ситуация — файловые базы с несколькими пользователями. В них регламентные задания выполняются только в сеансе, запущенном с соответствующим разрешением, поэтому «автоматическое» слияние может фактически не выполняться, если такой сеанс не запущен. Проверяйте фактическое выполнение задания в журнале регистрации.
Как проверить результат слияния
Сразу после завершения операции выполните несколько контрольных поисковых запросов. Найдите документ, созданный незадолго до слияния, — он должен находиться по тексту из любого индексируемого поля. Сравните скорость поиска с типичной для базы: после слияния большого дополнительного индекса ускорение обычно заметно невооружённым глазом.
Дополнительно проверьте журнал регистрации: события обновления и слияния индекса должны завершаться без ошибок. Если задание настроено автоматически, убедитесь на следующий день, что оно отработало по расписанию.
Как проверить результат
Документ находится по тексту из его полей
Документ не находится — индекс не обновлён
Результаты появляются быстро, без заметной паузы
Поиск по-прежнему медленный — возможно, нужно пересоздание индекса
Задание слияния завершилось успешно
Есть ошибки выполнения задания
Задание активно и выполняется по расписанию
Задание заблокировано или не имеет расписания
Часто задаваемые вопросы
Как часто нужно выполнять слияние индекса ППД?
Для большинства баз достаточно одного раза в сутки в нерабочее время. При низкой интенсивности ввода данных — раз в несколько дней. Частое слияние (несколько раз в день) не даёт преимуществ и лишь создаёт лишнюю нагрузку.
Можно ли работать в базе во время слияния индекса?
Да, в клиент-серверном режиме пользователи продолжают работать, а поиск остаётся доступным. Однако на больших базах возможно общее замедление, поэтому операцию лучше планировать на период минимальной активности.
Почему поиск не находит документы, созданные сегодня?
Скорее всего, давно не выполнялось обновление индекса. Новые объекты попадают в поиск только после обновления, а не автоматически. Проверьте расписание регламентного задания обновления индекса или запустите обновление вручную.
Чем слияние отличается от полного пересоздания индекса?
Слияние объединяет накопленные изменения с основным индексом и выполняется относительно быстро. Пересоздание строит индекс заново по всем данным базы — это длительная операция, нужная только при повреждении индекса или изменении состава индексируемых объектов.
Нужно ли слияние, если база файловая и пользователь один?
Да, но реже. При ежедневной работе выполняйте слияние раз в несколько дней или когда заметите замедление поиска. Учтите, что в файловом режиме автоматические регламентные задания требуют запущенного сеанса с соответствующими правами.
Что важно запомнить
Слияние индекса ППД объединяет основной и дополнительный индексы полнотекстового поиска, ускоряя поиск и сокращая объём данных. Оптимальная схема: частое обновление индекса днём и слияние раз в сутки ночью регламентным заданием. Полное пересоздание индекса нужно только при его повреждении. Контролируйте выполнение заданий через журнал регистрации.