Можно ли очистить регистры сведений УдалитьЗамерыВремени в 1С и как правильно уменьшить размер базы данных

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При администрировании информационных баз 1С системные администраторы и разработчики часто сталкиваются с быстрым ростом объема таблиц. Анализ распределения дискового пространства нередко показывает, что сотни мегабайт (а в крупных системах — десятки гигабайт) занимают технические регистры сведений, в названиях которых присутствует префикс Удалить..., например УдалитьЗамерыВремени2 и УдалитьЗамерыВремени3. Рассмотрим подробно, почему эти объекты появляются в конфигурации, безопасно ли удалять из них данные, как правильно уменьшить реальный размер базы и как отключить дальнейшее накопление ненужной технической информации.

Причины появления регистров с префиксом «Удалить» и механизм APDEX

Проанализируем архитектуру современных типовых решений фирмы «1С» (таких как 1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей, 1С:Бухгалтерия предприятия, 1С:ЗУП). Все они построены на базе Библиотеки стандартных подсистем (БСП), в состав которой входит подсистема «Оценка производительности».

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

  1. При изменении структуры хранения старые регистры не удаляются из метаданных моментально, чтобы исключить потерю данных и сбои при обновлении конфигурации.
  2. Устаревшим объектам присваивается технический префикс Удалить... (например, УдалитьЗамерыВремени, УдалитьЗамерыВремени2, УдалитьЗамерыВремени3).
  3. Новые замеры начинают фиксироваться в актуальных регистрах (например, ЗамерыВремени или ЗамерыВремениТехнологические).
  4. Объекты с префиксом Удалить остаются в конфигурации в течение нескольких релизов в рамках политики «мягкого перехода», после чего окончательно удаляются разработчиками в очередном крупном обновлении конфигурации.

Безопасность очистки регистров «УдалитьЗамерыВремени»

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

Очистка регистров сведений УдалитьЗамерыВремени, УдалитьЗамерыВремени2 и УдалитьЗамерыВремени3 полностью безопасна. Эти данные:

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

Способы очистки устаревших регистров замеров времени

Разберем практические варианты удаления накопленной информации из базы данных.

Способ 1. Программная очистка через набор записей

Если требуется быстро очистить конкретный регистр сведений без удаления структуры объекта в метаданных, воспользуемся внешней обработкой или встроенной консолью кода. Напишем компактный алгоритм, очищающий набор записей регистра:


Набор = РегистрыСведений.УдалитьЗамерыВремени3.СоздатьНаборЗаписей();
Набор.Записать();

Набор2 = РегистрыСведений.УдалитьЗамерыВремени2.СоздатьНаборЗаписей();
Набор2.Записать();

Создание пустого набора записей с последующим вызовом метода Записать() полностью удаляет все строки из таблицы регистра в базе данных в рамках одной быстрой транзакции.

Способ 2. Настройка регламентных заданий БСП

В типовых конфигурациях за удаление старых замеров отвечает встроенное регламентное задание Очистка замеров времени. Разберем по шагам, как настроить его выполнение:

  1. Перейдем в раздел «Администрирование» — «Обслуживание».
  2. Раскроем блок «Регламентные и фоновые задания».
  3. Найдем задание «Очистка замеров времени».
  4. Проверим срок хранения данных в настройках подсистемы оценки производительности. Если установлен чрезмерно большой период (например, более 30–90 дней), сократим его до разумных пределов или до 0 дней для разовой полной очистки.
  5. Выполним задание принудительно по кнопке «Выполнить сейчас».

Как отключить сбор замеров производительности

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

  1. Откроем раздел «Администрирование» — «Обслуживание».
  2. Перейдем в подраздел «Оценка производительности».
  3. Снимем флаг «Выполнять замеры производительности» (или «Оценка производительности» в зависимости от релиза конфигурации).

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

Освобождение фактического дискового пространства СУБД

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

При удалении строк СУБД лишь помечает страницы данных как свободные для повторного использования самой базой, но не возвращает их операционной системе автоматически.

Для файловых информационных баз (файл 1Cv8.1CD):

  1. Завершим все активные пользовательские сеансы и создадим резервную копию информационной базы.
  2. Откроем Конфигуратор.
  3. Перейдем в меню «Администрирование» — «Тестирование и исправление...».
  4. Установим флаг «Сжатие таблиц информационной базы».
  5. Нажмем кнопку «Выполнить». Процедура перестроит внутренние таблицы файла и уменьшит его физический размер на диске.
  6. Альтернативный способ — выгрузить базу в файл выгрузки .dt и загрузить его в новую пустую информационную базу.

Для клиент-серверных баз (Microsoft SQL Server, PostgreSQL):

  1. В среде Microsoft SQL Server Management Studio выполним операцию сжатия базы данных (Shrink Database или Shrink Files), либо выполним реорганизацию/перестроение индексов (Rebuild Indexes).
  2. В среде PostgreSQL выполним операцию полной очистки таблиц с помощью команды VACUUM FULL для освобождения неиспользуемых страниц на диске.

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

← На главную