Как узнать, что занимает место в файловой базе 1С: методы анализа и оптимизации

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

Когда размер файловой базы данных 1С (файл 1Cv8.1CD) переваливает за отметку в 10 Гб, многие технические специалисты начинают сталкиваться с замедлением работы системы и увеличением времени на создание резервных копий. В такой ситуации важно не просто «сжать» базу, а детально разобраться, какие именно данные потребляют дисковое пространство. Рассмотрим последовательно все этапы диагностики и способы решения этой задачи.

Первичный анализ файловой структуры

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

  1. Файл 1Cv8.1CD — это основное хранилище данных. Если его размер близок к общему объему папки, значит, проблема внутри таблиц.
  2. Папка 1Cv8Log — здесь хранится Журнал регистрации. Проанализируем ситуацию: если за журналом не следили годами, он может занимать несколько гигабайт. В этом случае поможет сокращение журнала регистрации через Конфигуратор.
  3. Временные файлы и кэш — иногда в папке могут оставаться файлы дампов или временные объекты после аварийного завершения работы.

Если мы убедились, что основной объем занимает именно 1Cv8.1CD, перейдем к изучению его внутренней структуры.

Использование встроенных средств и программных методов

В современных версиях платформы 1С (8.3.10 и выше) появился встроенный механизм, позволяющий программно получить размер данных. Рассмотрим пример кода, который можно запустить во внешней обработке, чтобы получить общее представление о распределении данных:


РазмерДанных = ПолучитьРазмерДанныхБазыДанных();
Для Каждого СтрокаТаблицы Из РазмерДанных Цикл
    Сообщить("Таблица: " + СтрокаТаблицы.ИмяТаблицы + " - Размер: " + СтрокаТаблицы.Размер);
КонецЦикла;

Этот метод ПолучитьРазмерДанныхБазыДанных() возвращает таблицу значений, в которой указаны имена таблиц (в терминах СУБД) и их размер. Это позволяет быстро найти «виновника» среди регистров или справочников.

Анализ с помощью «Инструментов разработчика»

Одним из самых мощных бесплатных средств для диагностики является расширение или обработка «Инструменты разработчика» (ИР). В ее составе есть специализированный отчет «Структура хранения БД». Разберем по шагам, как с ним работать:

  1. Запустим обработку в нашей информационной базе.
  2. Перейдем в раздел анализа структуры хранения.
  3. Нажмем кнопку получения данных. Программа сопоставит внутренние имена таблиц (например, _InfoReg1234) с понятными названиями объектов метаданных (например, РегистрСведений.ЗамерыВремени).
  4. Отсортируем список по колонке «Размер».

Проанализируем ситуацию: часто в топе оказываются регистры сведений, отвечающие за версионирование объектов, или таблицы с присоединенными файлами. Это дает нам четкое понимание, в какую сторону двигаться дальше.

Внешние утилиты для работы с файлом .1CD

Если база не открывается или мы хотим провести анализ без запуска сеанса 1С, воспользуемся сторонними утилитами, такими как Tool_1CD. Это классический инструмент, который читает физическую структуру файла базы данных. Рассмотрим его преимущества:

Утилита показывает размер каждой таблицы, количество записей и объем, занимаемый индексами и полями неограниченной длины (LOB-данные). Посмотрим на пример: если таблица _Config (хранилище конфигурации) занимает аномально много места, это может указывать на то, что база перегружена версиями расширений или историей конфигурации поставщика.

Перевод на временный SQL-сервер

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

Алгоритм действий следующий:

  1. Выгружаем базу в файл .dt.
  2. Разворачиваем пустую базу на SQL-сервере.
  3. Загружаем .dt в SQL-базу.
  4. Средствами SQL (например, через SQL Server Management Studio) открываем отчет «Disk Usage by Top Tables» (Использование диска основными таблицами).

Этот метод считается самым точным, так как СУБД предоставляет исчерпывающую информацию о распределении места между данными и индексами.

Основные причины разрастания базы (Check-list)

Проанализируем наиболее частые причины, из-за которых файловая база «пухнет»:

Техническое обслуживание и сжатие

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

  1. Тестирование и исправление (ТиИ). В Конфигураторе выберем пункт «Администрирование» — «Тестирование и исправление». Обязательно установим галочку «Сжатие таблиц информационной базы».
  2. Утилита cnvdbfl.exe. В папке bin установленной платформы находится штатная утилита для проверки физической целостности и оптимизации файла. Она работает быстрее и надежнее встроенного в Конфигуратор механизма.

Важность перехода на 64-битную платформу

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

Подведем итог: для анализа размера базы сначала проверим журнал регистрации, затем используем обработку «Структура хранения БД» или программный метод ПолучитьРазмерДанныхБазыДанных(). После выявления «тяжелых» объектов (файлы, версии, классификаторы) проводим их очистку и завершаем процесс обязательным сжатием таблиц через ТиИ или утилиту cnvdbfl.exe.

← На главную