К статье
Практический материал

Администрирование · 10 мин

Как уменьшить объем базы 1С 8.3

Практические способы уменьшить размер базы 1С 8.3: свертка, удаление помеченных объектов, очистка журналов, сжатие на SQL-сервере и файловом режиме.

Со временем любая база 1С 8.3 растет: накапливаются документы, записи регистров, версии объектов, журналы регистрации и служебные таблицы. Большой объем базы влияет на скорость проведения документов, время создания резервных копий, длительность обновления конфигурации и требования к дисковому пространству сервера.

Уменьшить базу можно несколькими способами: штатной сверткой итогов, удалением помеченных объектов, очисткой журналов и версионирования, а также административными средствами — сжатием файлов SQL Server или PostgreSQL и тестированием с исправлением файловой базы. Выбор метода зависит от того, какие данные занимают место и какой режим работы используется — файловый или клиент-серверный.

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

Определяем, что занимает место в базе

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

Для клиент-серверных баз размер таблиц можно посмотреть средствами СУБД: в MS SQL Server — отчет «Disk Usage by Table» в Management Studio, в PostgreSQL — запросы к системным представлениям с функцией pg_total_relation_size. Это покажет, какие таблицы самые тяжелые, и поможет выбрать точечный метод очистки.

Для файловой базы оценить внутреннюю структуру сложнее, но косвенный признак прост: если файл 1Cv8.1CD большой, а документов в системе немного, вероятно, объем дают журнал регистрации, версии объектов или неиспользуемое место после массовых удалений.

База растет равномерноНакопление документов и движений

Проверить объем за последние периоды, планировать свертку

Резкий рост после обновленияВерсии объектов или служебные таблицы

Проверить настройки версионирования и очистить историю

Файл большой, данных малоНеосвобожденное место в файле

Выполнить сжатие базы на СУБД или тестирование файловой базы

Медленные отчеты по старым годамМного исторических данных

Рассмотреть свертку итогов на дату

Удаление помеченных объектов

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

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

Учтите: удаление помеченных объектов не уменьшает физический размер файла базы автоматически. Данные помечаются как удаленные внутри файла, а место освобождается только после сжатия средствами СУБД или тестирования и исправления файловой базы.

Порядок удаления помеченных объектов
  1. 1
    Создайте резервную копию базы
  2. 2
    Откройте Администрирование — Обслуживание — Удаление помеченных объектов
  3. 3
    Выберите режим выборочного удаления и сформируйте список
  4. 4
    Проверьте список и запустите удаление
  5. 5
    Разберите объекты, которые не удалились из-за ссылок
  6. 6
    После завершения выполните сжатие базы на уровне СУБД

Свертка итогов: убираем старые документы

Свертка информационной базы — штатный механизм, который удаляет документы и движения по регистрам за старые периоды, заменяя их документами «Корректировка записей регистров» (или аналогичными операциями) с остатками на дату свертки. В типовых конфигурациях обработка находится в разделе «Администрирование» — «Обслуживание» — «Свертка информационной базы» либо в «НСИ и администрирование».

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

Свертка — длительная операция, на больших базах она может идти несколько часов. Выполняйте ее в монопольном режиме, в нерабочее время. После свертки обязательно проверьте остатки: сравните оборотно-сальдовую ведомость и ключевые отчеты до и после операции на копии базы.

Очистка журнала регистрации и версий объектов

Журнал регистрации в активно используемой базе может занимать гигабайты. Сократить его можно через конфигуратор: «Администрирование» — «Журнал регистрации», затем кнопка «Сократить» (в новых версиях платформы — через настройку журнала). Укажите дату, до которой удалить события, и сохраните старые события в отдельный файл, если история может понадобиться для аудита.

Если в конфигурации включено версионирование объектов (типично для БСП-based конфигураций), хранилище версий растет при каждом изменении документов и справочников. Проверьте настройки в разделе «Администрирование» — «Общие настройки» — «Версионирование объектов»: для большинства объектов достаточно хранить версии ограниченный срок или отключить версионирование для массовых документов. Очистка истории версий выполняется штатной регламентной операцией.

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

Сжатие базы на уровне СУБД и файлового режима

После удаления данных физический файл базы сам не уменьшается — внутри остается свободное место. В файловом режиме сжатие выполняется через конфигуратор: «Администрирование» — «Тестирование и исправление» с включенной опцией «Сжатие таблиц информационной базы». Операция требует монопольного доступа и может занять много времени на больших файлах.

Для MS SQL Server используется команда DBCC SHRINKDATABASE или сжатие файлов через Management Studio. Делать это стоит осознанно: частое сжатие вызывает фрагментацию индексов, поэтому после shrink рекомендуется выполнить реорганизацию или перестроение индексов. Для PostgreSQL аналог — команда VACUUM FULL, которая перестраивает таблицы и возвращает место операционной системе, но требует блокировки таблиц.

sql
DBCC SHRINKDATABASE (N'My1CBase', 10); -- оставить 10% свободного места

Если база на SQL Server работает в полной модели восстановления, проверьте также размер журнала транзакций (файл .ldf). Часто именно он занимает больше всего места. Решение — регулярное резервное копирование журнала или перевод базы в простую модель восстановления, если это допустимо политикой резервного копирования.

Типичные ошибки
01
Удаление данных без резервной копии — при ошибке данные теряются безвозвратно
02
Ожидание, что файл уменьшится сразу после удаления объектов — без сжатия место не освобождается
03
Регулярный SHRINK рабочей базы без необходимости — растет фрагментация индексов и падает производительность
04
Свертка без тестового прогона — расхождения в остатках обнаруживаются, когда исправлять уже поздно
05
Игнорирование журнала транзакций SQL Server — файл .ldf разрастается сильнее самой базы

Перенос файлов и вложений за пределы базы

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

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

Регламент: как не дать базе разрастись снова

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

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

Итог

Что важно запомнить

Уменьшение базы 1С 8.3 — это цепочка: анализ занимаемого места, свертка старых периодов, удаление помеченных объектов, очистка журналов и версий, затем физическое сжатие файлов. Каждый шаг начинается с резервной копии, а свертка — с тестового прогона на копии. Регулярное обслуживание предотвращает повторный неконтролируемый рост.

Частые вопросы

Уменьшится ли файл базы сразу после удаления документов?

Нет. Удаленные данные лишь помечаются свободным местом внутри файла. Чтобы файл физически уменьшился, нужно сжатие: «Тестирование и исправление» с опцией сжатия для файловой базы, DBCC SHRINKDATABASE для MS SQL Server или VACUUM FULL для PostgreSQL.

Можно ли свернуть базу без потери отчетности за старые периоды?

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

Что делать, если файл журнала транзакций SQL Server занимает больше места, чем сама база?

Проверьте модель восстановления базы. При полной модели журнал растет, пока не настроено резервное копирование журнала транзакций. Настройте регулярный backup log или переведите базу в простую модель восстановления, если точечное восстановление на момент времени не требуется.

Безопасно ли отключать версионирование объектов?

Отключение не удаляет сами объекты, но лишает возможности восстановить прежнюю версию документа или элемента справочника после ошибочного изменения. Разумный компромисс — оставить версионирование для критичных справочников (контрагенты, договоры) и отключить для массово изменяемых документов.

Как уменьшить базу, если место занимают в основном присоединенные файлы?

Переведите хранение файлов в тома на диске через настройки работы с файлами. Файлы вынесутся из базы в файловую систему, размер базы после сжатия заметно сократится. Не забудьте включить тома в план резервного копирования.

Сколько времени занимает свертка большой базы?

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