При активном росте файловой базы данных 1С пользователи часто сталкиваются с критической ошибкой превышения максимального объема внутренней таблицы (ограничение в 4 ГБ в стандартном формате 8.2.14). Начиная с версии платформы 8.3.8, разработчики предоставили новый формат базы данных с возможностью конфигурирования размера страницы: 4096, 8192, 16384, 32768 и 65536 байт (от 4К до 64К). Однако возникает закономерный вопрос: допустимо ли использовать страницы увеличенного размера, если операционная система и сама платформа 1С являются 32-разрядными, и с какими техническими последствиями придется столкнуться? Разберем все аспекты работы с новым форматом подробно.
Проанализируем технические ограничения: разрядность операционной системы и самого клиентского приложения 1С (32 или 64 бита) не запрещает выбор формата файловой базы данных 8.3.8 и любого размера страницы. 32-разрядная платформа 1С полностью поддерживает работу со страницами 8К, 16К, 32К и 64К.
Однако здесь кроется существенное ограничение архитектуры x86. Адресное пространство 32-битного процесса в Windows жестко ограничено 2 ГБ (или 3 ГБ при использовании специального ключа загрузки). Во время выполнения транзакций измененные страницы удерживаются в оперативной памяти процесса до момента физического сброса на диск. Чем больше размер страницы, тем больший объем оперативной памяти выделяется под кэширование транзакций. Если база работает с размером страницы 32К или 64К, выполнение тяжелых групповых перепроведений, реструктуризации или объемных отчетов на 32-битной платформе многократно увеличивает риск аварийного завершения программы с ошибкой «Недостаточно памяти».
Выясним, какой реальный выигрыш дает переход на увеличенный размер страницы:
8.2.14 размер страницы строго фиксирован и равен 4 КБ. Предел любой отдельной внутренней таблицы файла 1Cv8.1CD (а также индекса или BLOB-хранилища) составляет ровно 4 ГБ.8.3.8 с размером страницы 4К лимит объема таблицы остается прежним — 4 ГБ.Обратите внимание: увеличение страницы даже до 64К не снимает барьер полностью, а лишь расширяет границу с 4 ГБ до 6 ГБ. Это позволяет выиграть время, но не превращает файловую базу в бесконечное хранилище данных.
Рассмотрим, как изменение структуры файла влияет на скорость:
8.3.8 кардинально переработан и компактно размещен заголовок файла базы данных. Это значительно сокращает время первого «холодного» открытия информационной базы.Для смены формата и размера страницы файловой базы применяется специализированная консольная утилита cnvdbfl.exe, расположенная в каталоге bin установленной платформы 1С. Разберем по шагам типовые сценарии ее использования.
Перед выполнением любых операций обязательно создайте резервную копию файла 1Cv8.1CD и завершите все активные сеансы пользователей.
Посмотрим на примеры командных строк:
cnvdbfl.exe -i "C:\Bases\Trade\1Cv8.1CD"
8.3.8 с рекомендуемым размером страницы 8 КБ:
cnvdbfl.exe -c -f 8.3.8 -p 8k "C:\Bases\Trade\1Cv8.1CD"
8.3.8 со страницей 16 КБ:
cnvdbfl.exe -c -f 8.3.8 -p 16k "C:\Bases\Trade\1Cv8.1CD"
Также изменить формат можно без утилиты: достаточно создать в новой версии платформы чистую базу (начиная с 8.3.9 они автоматически создаются в формате 8.3.8 с размером 8К) и загрузить в нее данные через файл выгрузки .dt.
Проанализируем вопрос обратной совместимости. Вернуться на формат 8.2.14 технически возможно, но только при строгом соблюдении условия: ни одна из внутренних таблиц базы на момент отката не должна превышать 4 ГБ.
Если хотя бы одна таблица разрослась до 4,5–5 ГБ, обратная конвертация завершится критической ошибкой, и открыть базу на платформах версии 8.3.7 и старше уже не удастся. Для выполнения отката используется следующая команда:
cnvdbfl.exe -c -f 8.2.14 "C:\Bases\Trade\1Cv8.1CD"
Если ваша файловая база данных приближается к порогу в 4 ГБ, а перевод инфраструктуры на 64-битную платформу или сервер СУБД пока не завершен, рекомендуем следующий алгоритм действий:
Сжатие таблиц информационной базы и Реиндексация таблиц либо запустите утилиту проверки целостности chdbfl.exe. Это удалит накопленный «мусор» и физически уменьшит размер файла.cnvdbfl.exe на страницу 8К. Не устанавливайте размеры 32К или 64К на 32-битных платформах, чтобы избежать ошибок нехватки памяти в транзакциях.