Зависит ли ограничение размера таблицы в файловой базе 1С от разрядности платформы?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Многие администраторы и разработчики 1С сталкиваются с известной проблемой файловых баз: ошибкой превышения допустимого размера внутренней таблицы. Чаще всего пользователи задаются вопросом: ограничение в 4 Гб на одну таблицу в файловой базе актуально только для 32-разрядной версии платформы 1С или в 64-битной версии оно тоже присутствует? Разберем эту ситуацию по шагам и выясним причины возникновения лимитов, а также способы их обхода.

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

Проанализируем главный миф: переход на 64-битную платформу решает проблему размера базы. На самом деле, разрядность установленной платформы 1С не имеет никакого значения для лимитов файловой базы. Разрядность (32 или 64 бита) влияет исключительно на то, какой объем оперативной памяти (RAM) может использовать рабочий процесс приложения.

Сама архитектура файла .1CD и математика его внутренней адресации остаются абсолютно неизменными вне зависимости от того, из-под какой версии платформы вы к нему обращаетесь. Следовательно, установка 64-битного клиента не поможет преодолеть ошибку ограничения размера таблицы.

Форматы файла базы данных и точные лимиты

Рассмотрим подробнее, как устроены ограничения внутри самой базы данных. Файловая база 1С представляет собой единый файл-контейнер, однако внутри него каждая таблица разбивается максимум на 4 независимых потока (внутренних файла):

  1. Файл записей данных (сама информация из таблиц).
  2. Файл индексов (отвечает за быстрый поиск).
  3. Файл значений неограниченной длины (например, длинные текстовые комментарии, ХранилищеЗначения или картинки).
  4. Файл описания таблицы.

Ограничение по объему применяется не ко всей базе данных в целом, а к каждому из этих внутренних файлов по отдельности. На практике ошибку превышения лимита чаще всего вызывает именно «Файл индексов» какой-либо крупной таблицы (регистра сведений, накопления или бухгалтерии), который имеет свойство разрастаться гораздо быстрее самих данных.

Старый формат базы данных соответствует версии платформы 8.2.14 и использует фиксированный размер страницы в 4 Кб. Для этого формата максимальный размер одного внутреннего файла жестко ограничен 4 Гб.

Новый формат базы данных был введен начиная с платформы 8.3.8. В нем появилась возможность изменять размер страницы (8, 16, 32 или 64 Кб). По умолчанию используется страница размером 8192 байта (8 Кб). Однако логично возникающие ожидания пользователей о том, что при странице 64 Кб лимит вырастет пропорционально (до 64 Гб), оказались ошибочными. Для любого размера страницы в новом формате максимальный размер внутренней таблицы составляет ровно 6 Гб.

Подводные камни изменения размера страницы

Посмотрим на ситуацию с увеличением размера страницы. Выбор максимального размера страницы (например, 32 или 64 Кб) в новом формате не дает увеличения предельного размера таблицы свыше 6 Гб, но при этом приводит к существенному увеличению общего веса базы данных на жестком диске.

Дело в том, что свободное пространство на больших страницах используется менее эффективно. Каждое повышение размера страницы на шаг может увеличивать общий размер файла .1CD на 20-25% (база попросту "распухает"). Поэтому бездумно увеличивать размер страницы не рекомендуется.

Как решить проблему превышения размера таблицы

Если ваша база достигла предела и начала выдавать ошибки, рассмотрим несколько рабочих способов решения проблемы.

  1. Конвертация базы в новый формат. С помощью стандартной утилиты cnvdbfl.exe (она находится в папке bin установленной платформы 1С) можно перевести базу старого формата (лимит 4 Гб) в формат 8.3.8 (лимит 6 Гб). Это даст временную передышку и позволит базе работать дальше.
  2. Сжатие базы через Конфигуратор. Выполните штатную выгрузку информационной базы в файл формата .dt и сразу же загрузите ее обратно в пустую папку. В процессе этой операции происходит полная дефрагментация базы и перестроение индексов, что часто позволяет существенно уменьшить размер индексных файлов.
  3. Поиск и чистка проблемной таблицы. Выясним причину разрастания. При помощи функции встроенного языка ПолучитьСтруктуруХраненияБазыДанных можно точно вычислить, какая именно физическая таблица упирается в лимит. После выявления "виновника" можно удалить старые ненужные записи (например, очистить логи или временные данные) или провести операцию «свертки базы».
  4. Переход на клиент-серверный вариант. Кардинальное и самое правильное решение для растущих баз — перенос данных на полноценный SQL-сервер (например, MS SQL или PostgreSQL). В клиент-серверной архитектуре подобных жестких ограничений на размер отдельной таблицы просто не существует.

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

← На главную