Вопрос о максимальном размере файла информационной базы в файловом варианте (1Cv8.1CD) является одним из самых критичных для администраторов и программистов 1С. Часто возникают ситуации, когда база начинает «тормозить», выдавать ошибки записи или вовсе перестает открываться. Разберем детально, как устроена файловая СУБД 1С, какие существуют реальные ограничения и как можно «продлить жизнь» файловой базе, прежде чем переходить на клиент-серверный вариант (SQL).
Для начала проанализируем, что представляет собой файл 1Cv8.1CD. На самом нижнем уровне этот файл является своего рода внутренней файловой системой. Он организован в виде страниц. По умолчанию (до версии платформы 8.3.8) размер одной страницы составлял 4096 байт (4 Кб).
Рассмотрим математику ограничений. Номер страницы в структуре 1С представлен 4-байтовым целым числом без знака. Это означает, что максимально возможное количество страниц в файле составляет 4 294 967 296. Если умножить это число на стандартный размер страницы (4 Кб), мы теоретически получаем огромный объем. Однако архитектура 1С накладывает ограничения не на весь файл целиком, а на каждую конкретную таблицу внутри него.
Многие пользователи ошибочно полагают, что вся база 1С не может быть больше 4 Гб. Это не совсем верно. Выясним причину этого заблуждения. В файловой базе каждая таблица (например, таблица остатков, таблица документов или справочника) физически состоит из трех внутренних сущностей:
Ограничение в 4 Гб накладывается на каждую из этих сущностей внутри конкретной таблицы. Таким образом, одна таблица теоретически может занимать до 12 Гб (4 Гб данные + 4 Гб индексы + 4 Гб BLOB). Поскольку таблиц в базе сотни и тысячи, общий размер файла 1Cv8.1CD может достигать и 20, и 50, и даже 100 Гб, если данные распределены равномерно по разным объектам метаданных.
Начиная с версии платформы 8.3.8, разработчики 1С предоставили возможность изменять размер страницы при создании базы или при выполнении тестирования и исправления. Это позволяет радикально поднять планку ограничений. Посмотрим на зависимость лимита таблицы от размера страницы:
Важно: Увеличение размера страницы помогает обойти ошибку «Превышен максимальный размер таблицы», но оно также увеличивает требования к оперативной памяти и может немного снизить производительность при чтении мелких данных.
Чтобы не столкнуться с внезапной остановкой работы, проанализируем ситуацию заранее. В типовых конфигурациях чаще всего «раздуваются» следующие таблицы:
Для детального анализа рекомендуем использовать специализированные утилиты, такие как Tool_1CD или внешние обработки «Базомер», которые позволяют увидеть физический размер каждой таблицы внутри файла .1CD.
Часто файл базы имеет огромный размер из-за так называемого «мусора». При удалении объектов в 1С физическое место в файле не освобождается — система просто помечает страницы как пустые, чтобы использовать их в будущем. Разберем по шагам, как реально уменьшить размер файла:
Запустите конфигуратор и перейдите в меню Администрирование — Тестирование и исправление. Нам необходимо выбрать пункт «Сжатие таблиц информационной базы».
Рассмотрим, что происходит в этот момент: система полностью перестраивает физическую структуру файла, удаляя пустые «дыры» и возвращая неиспользуемое место операционной системе. Это единственный штатный способ уменьшить размер .1CD после массового удаления данных.
Если база растет слишком быстро, проверьте настройки версионирования. Если вам не нужна история каждого изменения справочника «Номенклатура» за последние 5 лет, эти данные можно очистить. Также эффективным методом является свертка информационной базы — перенос остатков на начало года и удаление старых документов.
Иногда база разрастается из-за таблицы _SystemSettings, где хранятся настройки пользователей. В некоторых случаях она может занимать гигабайты. Очистка этих настроек через программный код или стандартные обработки может существенно облегчить базу.
// Пример программной очистки настроек пользователя (использовать осторожно!)
Настройки = ХранилищеОбщихНастроек.Выбрать();
Пока Настройки.Следующий() Цикл
ХранилищеОбщихНастроек.Удалить(Настройки.КлючОбъекта, Настройки.КлючНастроек, Настройки.Пользователь);
КонецЦикла;
Несмотря на техническую возможность раздуть файловую базу до 100 Гб и выше, существуют критические факторы, при которых стоит немедленно рассмотреть переход на клиент-серверный вариант:
Если вы решили остаться на файловом варианте при размере базы более 10 Гб, крайне рекомендуется организовать работу через терминальный сервер (RDP). Это исключит передачу больших объемов данных по сети между клиентом и сервером базы, что значительно ускорит работу и снизит риск повреждения файла при сетевых сбоях. Проанализируйте ваше оборудование: использование SSD-накопителей для файловой базы дает прирост скорости в разы по сравнению с обычными HDD.
Подводя итог, отметим: максимальный размер файла 1С практически не ограничен, но ограничены его внутренние таблицы. Следите за размером базы, регулярно делайте сжатие таблиц и помните, что после 10-12 Гб файловая база требует особого внимания к резервному копированию и качеству сетевого оборудования.