Администрирование · 11 мин
Почему растет база 1С и как остановить рост
Разбираем, почему растет база 1С: журналы регистрации, версии объектов, вложения, РИБ. Как найти причину роста и безопасно уменьшить размер базы.
База 1С, которая вчера занимала 5 ГБ, а сегодня уже 12 ГБ, — типичная ситуация для рабочих систем. Рост почти никогда не связан с «документами сами по себе»: чаще всего объем съедают журналы регистрации, хранимые версии объектов, файловые вложения, служебные таблицы обмена и копии данных, которые система аккумулирует годами без очистки.
Опасность неконтролируемого роста не только в занятом месте на диске. Большая база дольше копируется, медленнее обновляется, хуже укладывается в регламент обслуживания, а восстановление из резервной копии превращается в многочасовую задачу. В файловом варианте ситуация еще жестче: при приближении файла 1Cv8.1CD к 4 ГБ возрастает риск повреждения данных.
Прежде чем что-то удалять, нужно понять, какая именно часть базы растет. Ниже разобраны основные источники роста, способы их диагностики и безопасные методы уменьшения объема.
Как определить, что именно занимает место
Диагностика начинается с измерения. В файловом варианте посмотрите размер файла 1Cv8.1CD в каталоге базы, а также объем сопутствующих каталогов, если вложения хранятся в томах на диске. В клиент-серверном варианте размер смотрят на уровне СУБД: для MS SQL Server — отчет по таблицам (Disk Usage by Table), для PostgreSQL — запросы к pg_total_relation_size.
Наличие таблиц с непривычно большим объемом сразу локализует проблему. Например, разросшаяся таблица журнала регистрации, таблицы хранения версий объектов или таблицы присоединенных файлов укажут на конкретный источник. Без такого измерения очистка превращается в гадание: можно удалить документы и не получить никакого эффекта, потому что место занимал журнал.
Проверьте журнал регистрации и очереди обмена — они растут быстрее всего
Проверьте версии объектов, вложения и старые периоды документов
Проверьте, не выполнялась ли загрузка данных, обмен или массовое изменение
Журнал регистрации — самый частый виновник
Журнал регистрации фиксирует действия пользователей, ошибки, фоновые задания и системные события. При настройке «регистрировать все события» в активной базе он способен прибавлять сотни мегабайт в месяц, а в файловом варианте хранится прямо в каталоге базы в виде файлов формата lgd/lgp.
Особенно быстро журнал раздувается при отладке, когда администратор включает подробную регистрацию и забывает вернуть нормальный уровень. Также рост ускоряют фоновые задания, которые завершаются ошибкой каждые несколько минут: каждая ошибка — это запись в журнал.
Как сократить журнал
В файловом варианте используйте «Администрирование → Настройка журнала регистрации → Сократить» в конфигураторе: укажите дату, до которой удалить события, и сохраните старые данные в отдельный файл при необходимости. В клиент-серверном варианте журнал сокращается тем же механизмом, при этом хранится он в отдельном каталоге на сервере 1С.
Дополнительно снизьте уровень регистрации: для штатной работы обычно достаточно регистрации ошибок и предупреждений, а подробный режим включайте только на время расследования инцидентов.
Обмены, РИБ и очереди сообщений
Базы, участвующие в распределенных узлах (РИБ) или обменах с другими системами, накапливают служебные данные: зарегистрированные изменения, сообщения обмена, данные о результатах обмена. Если узел обмена фактически не используется, но регистрация изменений для него активна, таблицы изменений растут бесконечно.
Проверьте список планов обмена: удалите неиспользуемые узлы, а для работающих настройте регламентное удаление устаревшей информации о результатах обмена. Также обратите внимание на «зависшие» сообщения обмена большого размера — их повторная выгрузка может годами тиражировать одни и те же данные.
Служебные данные и отсутствие регламентной очистки
Кроме перечисленного, объем накапливают: результаты выполнения регламентных заданий, устаревшие сеансовые данные, неактуальные записи регистров сведений с историчностью, помеченные на удаление объекты, для которых никогда не запускали «Удаление помеченных объектов».
В типовых конфигурациях предусмотрены штатные обработки очистки: удаление помеченных объектов, очистка устаревших версий, удаление устаревшей информации синхронизации. Настройте их выполнение по расписанию в нерабочее время — это предотвращает накопление, а не борется с последствиями.
Что делать с уже разросшейся базой
Если база уже выросла, действуйте по порядку: сначала резервная копия, затем измерение таблиц, затем точечная очистка выявленных источников. После массового удаления данных в клиент-серверном варианте место в файлах СУБД само не вернется: для MS SQL может потребоваться сжатие файлов (shrink) с последующей перестройкой индексов, для PostgreSQL — vacuum full или реиндексация. Эти операции выполняет администратор СУБД, они ресурсоемкие.
В файловом варианте после очистки выполните «Тестирование и исправление» с режимом сжатия таблиц — только так удаленные данные физически уменьшат файл 1Cv8.1CD. Учтите, что тестирование требует монопольного доступа и на большой базе занимает заметное время.
Когда поможет свертка базы
Если основной объем — это документы и остатки за много прошлых лет, а не служебные данные, рассмотрите штатную свертку базы: движения по старым периодам заменяются входящими остатками на дату свертки. Это радикальная операция: старые документы становятся недоступны для анализа в разрезе проводок, поэтому перед сверткой базу копируют в архивную копию для доступа к истории.
Как выбрать действие
Профилактика: как не допустить повторного роста
Разовая очистка решает симптом, а не причину. Чтобы база не разрасталась снова, закрепите регламент: периодическое сокращение журнала регистрации, автоматическая очистка версий и результатов обмена, контроль размера базы и томов (хотя бы ежемесячный просмотр), удаление помеченных объектов по расписанию.
Полезно зафиксировать для себя базовый уровень: сколько база занимает сейчас после очистки и какой прирост в месяц считается нормальным при вашем объеме документооборота. Отклонение от этого прироста — ранний сигнал, что какой-то механизм (обмен, задание, версионирование) начал генерировать лишние данные.
Что важно запомнить
Рост базы 1С почти всегда объясняется журналом регистрации, версиями объектов, вложениями, обменами или отсутствием регламентной очистки. Сначала измерьте таблицы, затем очищайте точечно, после удаления возвращайте место средствами СУБД или сжатием — и обязательно закрепите результат регламентными заданиями и резервным копированием.
Частые вопросы
Можно ли просто удалить старые документы, чтобы уменьшить базу?
Технически можно, но это разрушит учет: остатки перестанут сходиться, отчеты за прошлые периоды станут недоступны, а налоговая история будет утеряна. Для старых периодов используйте штатную свертку базы, а для помеченных объектов — регламентное удаление помеченных. Прямое удаление документов — крайняя мера после анализа последствий.
Почему после удаления данных размер базы не уменьшился?
Удаление записей освобождает место внутри файлов данных, но не возвращает его операционной системе. В клиент-серверном варианте нужны операции сжатия на стороне СУБД, в файловом — «Тестирование и исправление» со сжатием таблиц. До выполнения этих процедур файл базы останется прежнего размера.
Какой размер базы считается критичным для файлового варианта?
Формального «безопасного» порога нет, но при приближении файла 1Cv8.1CD к 4 ГБ заметно растет риск повреждения и ухудшается производительность. Если база приближается к этому объему и продолжает расти, планируйте переход на клиент-серверный вариант, а не ждите сбоя.
Как узнать, не растет ли база из-за фоновых заданий?
Откройте журнал регистрации и отфильтруйте события по фоновым заданиям: частые ошибки одного и того же задания означают постоянную запись в журнал и возможное накопление данных в регистрах. Также проверьте консоль заданий — задание, которое выполняется каждую минуту и каждый раз обрабатывает большой объем, может генерировать значительный прирост.
Опасно ли отключать версионирование объектов полностью?
Версионирование — вспомогательный механизм, на учетные данные его отключение не влияет. Однако вы потеряете возможность посмотреть, кто и что менял в объекте. Компромисс — оставить версионирование только для ключевых справочников (контрагенты, номенклатура, договоры) с ограниченным сроком хранения версий.
Как часто нужно проводить регламентную очистку?
Достаточно настроить автоматическое выполнение штатных обработок очистки: удаление помеченных объектов и устаревших данных обмена — еженедельно или ежемесячно в нерабочее время, сокращение журнала регистрации — по мере прироста, обычно раз в несколько месяцев. Раз в месяц контролируйте общий размер базы, чтобы вовремя заметить аномальный рост.