Как изменится размер базы 1С при переносе из файловой базы 1CD в MS SQL Server?

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

При переходе с файловой версии информационной базы 1Cv8.1CD на клиент-серверный вариант под управлением MS SQL Server перед системными администраторами и специалистами 1С встает ключевой вопрос сайзинга: сколько дискового пространства займет база сразу после загрузки из дампа .dt и какой коэффициент роста необходимо заложить при проектировании дисковой подсистемы и RAID-массивов. Проанализируем физические различия хранения данных, выясним причину изменения объема и разберем практические шаги по расчету места.

Почему размер базы в MS SQL Server отличается от файла 1CD

Файловая база 1Cv8.1CD и база данных MS SQL Server принципиально различаются по внутреннему устройству. В файловом формате платформа 1С использует собственные механизмы сжатия и компоновки записей. При загрузке информации через файл выгрузки .dt данные преобразуются в стандартные типы СУБД (nchar, numeric, datetime, uniqueidentifier). Рассмотрим ключевые факторы, влияющие на итоговый объем:

  1. Страничная организация данных: В MS SQL Server страницы имеют фиксированный размер 8 Кб. Если строка или группа записей не заполняют страницу целиком, остаток пространства может оставаться свободным, что увеличивает общий физический объем файлов данных .mdf и .ndf.
  2. Объем индексных структур: В типовых конфигурациях 1С (например, 1С:Бухгалтерия предприятия) активно используются регистры бухгалтерии, накопления и сведений, требующие большого количества составных индексов. На стороне MS SQL Server индексы строятся заново и нередко занимают от 30% до 60% всего объема файла данных. В исходном файле 1CD индексы хранятся существенно компактнее.
  3. Степень обслуживания исходного файла: Если в файловой базе не выполнялось тестирование и исправление (ТИИ) со сжатием таблиц, в файле 1Cv8.1CD могут оставаться свободные неиспользуемые страницы после обновлений или удаления данных. В таком случае оптимизированная файловая база объемом 3 Гб после загрузки в SQL развернется в чистые таблицы, однако их объем все равно превысит исходный из-за структуры индексов.

Какое соотношение размеров ожидать: практические коэффициенты

Опыт администраторов и практические замеры показывают, что одинаковый объем в файле и СУБД — крайне редкое исключение. Разберем формулу расчета необходимого пространства:

  1. Коэффициент первичного развертывания: Чистый файл данных .mdf после загрузки обычно больше исходного компактного 1CD в 1,5–3 раза. Таким образом, файловая база объемом 3 Гб после выполнения ТИИ и сжатия в MS SQL Server займет от 4,5 до 9 Гб только под данные и индексы.
  2. Журнал транзакций (.ldf): Размер журнала зависит от модели восстановления. При неправильной процедуре импорта файл журнала транзакций может превысить файл данных в несколько раз.
  3. Коэффициент роста на эксплуатацию: При проектировании хранилища рекомендуется закладывать коэффициент х2–х3 на стартовый размер базы данных и дополнительный запас х4–х6 на естественный рост документов, накопление версий и служебных таблиц в перспективе 1–2 лет.

Пошаговый регламент загрузки базы из DT без раздувания диска

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

  1. Настройка модели восстановления: Перед загрузкой дампа убедимся, что для созданной пустой базы установлена модель восстановления Simple (Простая). Загрузка .dt представляет собой массивную непрерывную вставку сотен тысяч записей. Если оставить модель Full (Полная), журнал транзакций зафиксирует каждую строку, и файл .ldf моментально раздуется до 15–30 Гб. Переводить базу в модель Full следует только после завершения импорта и создания первой полной резервной копии.
  2. Предварительное выделение размера файлов: Не оставляйте размер файлов .mdf и .ldf по умолчанию (обычно несколько мегабайт). Задайте начальный размер файла данных с учетом коэффициента (например, сразу 8–10 Гб для трехгигабайтной файловой базы) и размер журнала транзакций (не менее 2–4 Гб). Это исключит фрагментацию на уровне файловой системы диска из-за сотен мелких операций авторасширения.
  3. Контроль авторасширения (Autogrowth): Изменим параметры авторасширения с процентов на фиксированный объем. Рекомендуется задавать шаг прироста не менее 512 Мб или 1024 Мб, что предотвратит образование избыточного количества виртуальных файлов журнала (VLF) внутри .ldf.
  4. Контроль дискового пространства tempdb: При загрузке данных платформа 1С массово создает временные таблицы и перестраивает индексы, создавая колоссальную нагрузку на системную базу tempdb. Убедимся, что на диске, где расположен tempdb, свободно не менее двойного объема исходной базы данных, иначе процесс завершится аварийной ошибкой переполнения диска.

Влияние версий MS SQL Server (2014 против 2016 и выше)

Рассмотрим вопрос влияния версии СУБД на дисковый объем. Сами по себе базовые типы данных в SQL Server 2014 и 2016 одинаковы, однако существует важное различие в механизмах сжатия:

  1. В MS SQL Server 2014 сжатие данных на уровне страниц и строк (PAGE и ROW compression) поддерживалось исключительно в редакции Enterprise.
  2. Начиная с MS SQL Server 2016 Service Pack 1, сжатие данных стало доступно во всех редакциях, включая Standard и даже бесплатную Express. Включение страничного сжатия (PAGE) для тяжелых таблиц и регистров 1С позволяет уменьшить физический размер файла .mdf на 40–60% без существенной потери производительности на современных процессорах.

Для небольших информационных баз с исходным размером 3 Гб ограничение MS SQL Server Express (10 Гб на один файл базы данных) позволяет эксплуатировать систему без покупки коммерческих лицензий, если включена простая модель восстановления, регулярно обслуживаются индексы и вынесены присоединенные файлы из тела базы данных в тома на диске.

Анализ фактического использования места

После завершения загрузки проверим реальное распределение дискового пространства между строками данных и индексами. Для этого выполним в среде SQL Server Management Studio системную процедуру:


USE [ИмяВашейБазы];
GO
EXEC sp_spaceused;
GO

Полученный отчет покажет точный размер данных (data), объем служебных индексов (index_size) и нераспределенное пространство (unused), на основании которых администратор может составить точный прогноз масштабирования серверов.

← На главную