При администрировании информационных баз 1С системные администраторы и разработчики часто сталкиваются с быстрым ростом объема таблиц. Анализ распределения дискового пространства нередко показывает, что сотни мегабайт (а в крупных системах — десятки гигабайт) занимают технические регистры сведений, в названиях которых присутствует префикс Удалить..., например УдалитьЗамерыВремени2 и УдалитьЗамерыВремени3. Рассмотрим подробно, почему эти объекты появляются в конфигурации, безопасно ли удалять из них данные, как правильно уменьшить реальный размер базы и как отключить дальнейшее накопление ненужной технической информации.
Проанализируем архитектуру современных типовых решений фирмы «1С» (таких как 1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей, 1С:Бухгалтерия предприятия, 1С:ЗУП). Все они построены на базе Библиотеки стандартных подсистем (БСП), в состав которой входит подсистема «Оценка производительности».
Данная подсистема функционирует по международной методике APDEX (Application Performance Index). Ее главная цель — замерять длительность выполнения ключевых пользовательских операций: времени проведения документов, формирования тяжелых отчетов, открытия списков и запуска обработок. В ходе эволюции БСП разработчики «1С» неоднократно оптимизировали структуру хранения данных замеров, чтобы снизить взаимные блокировки СУБД при одновременной работе сотен пользователей:
Удалить... (например, УдалитьЗамерыВремени, УдалитьЗамерыВремени2, УдалитьЗамерыВремени3).ЗамерыВремени или ЗамерыВремениТехнологические).Удалить остаются в конфигурации в течение нескольких релизов в рамках политики «мягкого перехода», после чего окончательно удаляются разработчиками в очередном крупном обновлении конфигурации.Выясним, повлияет ли удаление записей из этих таблиц на учетную систему. Записи в регистрах оценки производительности содержат исключительно технологическую информацию: дату и время замера, идентификатор операции, длительность выполнения в секундах и имя пользователя.
Очистка регистров сведений УдалитьЗамерыВремени, УдалитьЗамерыВремени2 и УдалитьЗамерыВремени3 полностью безопасна. Эти данные:
Разберем практические варианты удаления накопленной информации из базы данных.
Способ 1. Программная очистка через набор записей
Если требуется быстро очистить конкретный регистр сведений без удаления структуры объекта в метаданных, воспользуемся внешней обработкой или встроенной консолью кода. Напишем компактный алгоритм, очищающий набор записей регистра:
Набор = РегистрыСведений.УдалитьЗамерыВремени3.СоздатьНаборЗаписей();
Набор.Записать();
Набор2 = РегистрыСведений.УдалитьЗамерыВремени2.СоздатьНаборЗаписей();
Набор2.Записать();
Создание пустого набора записей с последующим вызовом метода Записать() полностью удаляет все строки из таблицы регистра в базе данных в рамках одной быстрой транзакции.
Способ 2. Настройка регламентных заданий БСП
В типовых конфигурациях за удаление старых замеров отвечает встроенное регламентное задание Очистка замеров времени. Разберем по шагам, как настроить его выполнение:
Если в организации нет необходимости постоянно отслеживать метрики по шкале APDEX, сбор показателей можно отключить полностью. Это предотвратит дальнейший рост объема базы данных и снизит нагрузку на сервер.
Важный нюанс: обратим внимание на особенность типовых конфигураций. Если отключить замеры производительности с помощью снятия главного флага, регламентное задание по очистке также перестает запускаться по расписанию. Поэтому перед отключением подсистемы рекомендуется сначала полностью очистить накопленные данные, либо выполнить очистку программно.
Многие специалисты замечают, что после удаления записей из регистров размер файла базы данных или файла табличного пространства на диске не уменьшается. Разберем, почему это происходит и как вернуть физическое место на накопителе.
При удалении строк СУБД лишь помечает страницы данных как свободные для повторного использования самой базой, но не возвращает их операционной системе автоматически.
Для файловых информационных баз (файл 1Cv8.1CD):
.dt и загрузить его в новую пустую информационную базу.Для клиент-серверных баз (Microsoft SQL Server, PostgreSQL):
VACUUM FULL для освобождения неиспользуемых страниц на диске.Таким образом, очистка устаревших технологических регистров в сочетании со сжатием таблиц позволяет безопасно освободить дисковое пространство и оптимизировать скорость резервного копирования без малейшего риска для учетных данных предприятия.