При администрировании баз данных 1С:Предприятие 8.3 пользователи часто сталкиваются с парадоксальной ситуацией: рабочая база в формате .1CD занимает 10–12 Гб, но после выгрузки в файл резервной копии .dt объем сокращается до 1.5–2 Гб. Разница в 4–6 раз может вызвать подозрения в целостности данных или натолкнуть на мысли о наличии «мусора» в базе. В данной статье мы разберем внутреннее устройство файловой базы, выясним причины такого сжатия и определим, когда стоит начинать беспокоиться о лимитах 1С.
Для начала проанализируем, что представляют собой эти файлы с точки зрения платформы. Файл .1CD — это полноценная база данных, содержащая не только сами записи (документы, справочники), но и служебную информацию, необходимую для оперативной работы. Выгрузка же в .dt — это проприетарный формат архивной копии.
Рассмотрим основные причины разницы в объеме:
.1CD значительную часть места занимают индексы — специальные структуры, которые позволяют 1С мгновенно находить нужные данные, не перебирая все таблицы целиком. Индексы могут занимать от 30% до 70% объема всей базы. При выгрузке в .dt индексы не сохраняются, так как они могут быть автоматически перестроены при загрузке базы..dt использует внутренние алгоритмы компрессии. Все текстовые и бинарные данные упаковываются аналогично обычным ZIP-архивам. Рабочий файл .1CD не сжат, так как это замедлило бы операции чтения и записи..1CD могут оставаться пустые страницы, которые физически занимают место на диске. При выгрузке в .dt попадают только актуальные, «живые» записи..dt не содержит конфигурацию, это не так. И .1CD, и .dt содержат конфигурацию программы, но в .dt она хранится в сжатом виде.Основной страх администраторов файловых баз — достижение предела размера. Разберем ситуацию подробнее. Файл .1CD внутри себя разделен на логические таблицы. Каждая таблица (например, _InfoReg123 или _Document456) состоит из трех основных частей:
Исторически в 1С существовало жесткое ограничение: каждая из этих трех составляющих одной таблицы не может превышать 4 Гб. Таким образом, сама база может весить и 20, и 40 Гб, но если размер индексов одного конкретного регистра сведений достигнет 4 Гб, база выдаст ошибку «Превышен максимальный размер таблицы». Мы можем сделать вывод: если ваша база весит 11 Гб, это еще не повод для паники, если данные распределены по таблицам равномерно.
Чтобы понять, насколько вы близки к критической отметке, необходимо проанализировать состав .1CD. Выясним причину разрастания с помощью специализированных средств. Проанализируем два способа:
Если мы видим, что какая-то таблица приближается к 3–3.5 Гб, это сигнал к активным действиям.
Технологии не стоят на месте, и современные версии платформы позволяют значительно отодвинуть границы файлового режима. Рассмотрим, как мы можем оптимизировать базу штатными средствами конфигуратора.
Изменение размера страницы
Начиная с версии платформы 8.3.8, появилась возможность изменять размер страницы данных. По умолчанию он составляет 4096 байт (4 Кб). Увеличив его до 65536 байт (64 Кб), можно не только повысить производительность на больших объемах, но и в ряде случаев решить проблему с хранением крупных объектов. Однако стоит учитывать, что это может привести к физическому «раздуванию» файла .1CD.
Поддержка 64-битных смещений (Платформа 8.3.15+)
Это самое важное обновление для файловых баз. В платформе 8.3.15 и выше появилась возможность использовать формат базы с 64-битными смещениями. Это практически снимает старый лимит в 4 Гб на одну таблицу. Теперь внутренние структуры могут расти до размеров, ограничиваемых только возможностями вашей файловой системы (например, лимитами NTFS).
Для перехода на этот формат выполним следующие шаги в режиме Конфигуратора:
Если база разрослась, а переходить на SQL-вариант пока нет возможности или желания, разберем методы очистки данных.
Рассмотрим процедуру сжатия таблиц. При удалении объектов в 1С (через «Удаление помеченных») данные не исчезают из файла физически. Они просто помечаются как свободные. Чтобы физически уменьшить размер файла .1CD, необходимо запустить ТиИ с включенной опцией «Сжатие таблиц». Платформа пересоберет файл, исключив из него пустоты.
Проанализируем ситуацию, когда база ведется много лет. Свертка позволяет обрезать данные до определенной даты (например, оставить только последние 3 года), заменив старые документы на документы ввода остатков.
Посмотрим на типичные проблемы свертки, упомянутые в обсуждении, например, расхождение сальдо на счете 50.01 и появление сумм на счете 000. Это происходит из-за неверной последовательности проведения документов или наличия ручных корректировок. При выполнении свертки всегда:
Часто основной объем занимают не проводки, а прикрепленные сканы договоров и PDF-счета. Если ваша конфигурация построена на БСП (Библиотека стандартных подсистем), переведите хранение файлов из базы в тома на диске. Это позволит:
.1CD на объем всех картинок и документов.Если база достигла 15–20 Гб и работает медленно, никакие оптимизации не заменят клиент-серверный режим. Посмотрим на альтернативы:
Разница в размере между .dt и .1CD — это нормальное явление, обусловленное индексацией и отсутствием сжатия в рабочей базе. Для современной платформы 8.3.15+ размер базы в 7–10 Гб не является критическим при правильной настройке формата базы. Тем не менее, регулярное проведение ТиИ, настройка журнала регистрации и контроль за ростом таблиц — необходимые задачи для стабильной работы системы.