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

В экосистеме 1С:Предприятие существуют два принципиально разных способа хранения данных: файловый и клиент-серверный (SQL). Методология подсчета объема в этих режимах кардинально отличается. Если в файловом варианте все сводится к анализу одного файла на диске, то в случае с MS SQL Server или PostgreSQL необходимо учитывать не только размер таблиц данных, но и файлы транзакционных логов, которые могут расти бесконтрольно.

Некорректная оценка размера часто приводит к ложным выводам. Администраторы могут видеть огромный файл базы, но не понимать, что 90% места занимает журнал регистрации или временные таблицы. В этой статье мы детально разберем инструменты для точного замера объема данных, особенности работы с IBASE и специфические SQL-запросы для серверных СУБД.

Проверка размера в файловом варианте работы

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

Однако физический размер файла на диске не всегда равен объему полезной информации. Механизм файловой СУБД 1С склонен к фрагментации. При активном удалении записей или изменении конфигурации файл может увеличиваться в размерах, но внутренне содержать много «пустот». Это явление называется раздуванием файла.

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

⚠️ Внимание: Никогда не пытайтесь вручную обрезать файл 1CD через сторонние HEX-редакторы или утилиты сжатия. Это гарантированно приведет к полной потере данных и невозможности запуска базы.

Если файл занимает несоразмерно много места по сравнению с количеством записей в документах, целесообразно выполнить процедуру сжатия. Она доступна в том же окне тестирования. Процесс пересоздаст файл, убрав внутренние пустоты, что часто уменьшает объем в 1.5–2 раза без потери информации.

💡

Перед выполнением сжатия файловой базы обязательно сделайте полную копию файла 1CD на другой физический диск. Процесс необратим и в случае сбоя питания может повредить структуру.

Анализ объема данных в клиент-серверном варианте (MS SQL)

В серверном варианте ситуация сложнее. Данные 1С хранятся в таблицах СУБД, имена которых начинаются с префикса _ (например, _InfoRg, _Document). Простой просмотр свойств файла .mdf в проводнике Windows покажет общий размер файла данных, но не даст понимания, сколько места занимают именно таблицы 1С, а сколько — системные объекты или другие базы на том же сервере.

Для глубокого анализа необходимо подключиться к серверу баз данных через SQL Server Management Studio или аналогичный клиент. Стандартный отчет «Сведения о базе данных» покажет общий размер, но для детализации лучше использовать специализированные системные хранимые процедуры или прямые запросы к системным представлениям.

Особое внимание следует уделить файлам журналов транзакций (.ldf). В режиме полной восстановления (Full Recovery Model) журнал не очищается автоматически до момента бэкапа логинов. Это частая причина, по которой диск сервера внезапно оказывается заполнен, хотя таблица данных (.mdf) имеет скромный размер.

EXEC sp_spaceused

Эта команда, выполненная в контексте базы 1С, вернет сводную информацию: общий размер базы, размер занятых данными страниц и размер свободного пространства внутри файлов. Однако для администратора 1С более важна детализация по таблицам, чтобы найти «тяжеловесов».

📊 Какая СУБД используется в вашей инфраструктуре?
MS SQL Server
PostgreSQL
Oracle
Файловый вариант
Не знаю

SQL-запрос для детального анализа таблиц 1С

Чтобы понять, какие именно регистры или документы занимают больше всего места, необходимо выполнить запрос к системным таблицам СУБД. В MS SQL Server это делается через объединение представлений sys.dm_db_partition_stats и sys.allocation_units. Такой подход позволяет увидеть размер каждой таблицы в мегабайтах.

Ниже приведен оптимизированный запрос, который выводит список таблиц базы 1С, отсортированный по убыванию занимаемого места. Он учитывает только данные кластеризованных индексов и куч, игнорируя служебные структуры, что дает чистую картину объема пользовательских данных.

SELECT 

t.name AS TableName,

SUM(a.total_pages) * 8 / 1024 AS TotalSpaceMB,

SUM(a.used_pages) * 8 / 1024 AS UsedSpaceMB,

(SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 AS UnusedSpaceMB

FROM

sys.tables t

INNER JOIN

sys.indexes i ON t.OBJECT_ID = i.object_id

INNER JOIN

sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id

INNER JOIN

sys.allocation_units a ON p.partition_id = a.container_id

WHERE

t.name LIKE'_%'

GROUP BY

t.name

ORDER BY

TotalSpaceMB DESC;

Результат выполнения этого скрипта покажет, какие именно регистры сведений или накопления являются самыми объемными. Часто оказывается, что таблицами-лидерами являются регистры накопления остатков или таблицы исторических данных, которые не были своевременно удалены.

Почему имена таблиц начинаются с подчеркивания?

Платформа 1С автоматически добавляет префикс"_" ко всем системным и пользовательским таблицам в SQL, чтобы избежать конфликтов имен с системными объектами СУБД и зарезервировать пространство имен для своих нужд.

Таблица сравнения методов оценки размера

Различные методы дают разную степень точности и требуют разных прав доступа. Выбор инструмента зависит от того, являетесь ли вы простым пользователем с правами на запуск 1С или администратором сервера с доступом к консоли СУБД.

Метод проверки Требуемые права Точность данных Влияние на работу
Свойства файла в ОС Доступ к файловой системе Низкая (включает пустоты) Отсутствует
Отчет"Лицензии" в 1С Право"Администрирование" Средняя (только файл 1CD) Минимальное
Запрос sp_spaceused db_owner или db_ddladmin Высокая (физический размер) Отсутствует
Анализ системных таблиц SQL sysadmin или VIEW DEFINITION Максимальная (потаблично) Незначительная нагрузка на CPU

Как видно из таблицы, для оперативной оценки достаточно прав пользователя 1С, но для глубокой оптимизации необходим доступ к серверу баз данных. Использование системных представлений SQL является наиболее профессиональным подходом.

💡

Для планирования места на диске всегда используйте данные из SQL-запросов, а не размер файла в проводнике, так как файл может быть преднамеренно расширен СУБД для будущей записи.

Журнал регистрации и его влияние на объем

Одним из самых коварных источников разрастания базы является журнал регистрации. По умолчанию платформа может хранить события годами, если не настроена политика ротации. В файловом варианте журнал хранится внутри файла 1CD, а в серверном — в отдельной таблице _Journal или в файлах журнала СУБД, в зависимости от версии платформы и настроек.

Регулярная очистка журнала — обязательная процедура технического обслуживания. Однако делать это нужно осторожно. Удаление старых записей освобождает место, но не всегда уменьшает физический размер файла данных сразу. СУБД помечает страницы как свободные для повторного использования, но не возвращает место операционной системе без команды сжатия (Shrink).

  • 🗑️ Настройте автоматическую очистку журнала регистрации через расписание регламентных заданий в разделе «Администрирование».
  • ⏳ Установите период хранения событий не более 3-6 месяцев, если нет требований законодательства хранить их дольше.
  • 📉 После массовой очистки записей выполните операцию сжатия базы данных (Shrink) через Management Studio, чтобы вернуть место на диск.

Игнорирование журнала регистрации приводит к тому, что база данных растет линейно каждый день, независимо от активности пользователей. Это особенно критично для высоконагруженных систем с тысячами пользователей.

⚠️ Внимание: Интерфейсы и точные названия пунктов меню могут отличаться в зависимости от версии платформы 1С:Предприятие (8.3.20, 8.3.25 и новее). Всегда сверяйтесь со справкой конкретной версии перед изменением настроек хранения журнала.

Оптимизация и сжатие базы данных

После того как вы узнали размер базы и выявили причины его роста, наступает этап оптимизации. Для серверных баз данных важным аспектом является управление индексацией. Избыточные индексы занимают место и замедляют запись, а их отсутствие тормозит чтение. Анализ запросов через Profiler или Execution Plan поможет найти баланс.

В файловом варианте основным инструментом остается «Тестирование и исправление». Запуск этой процедуры с галочкой «Сжатие информационной базы» является единственным безопасным способом уменьшить файл 1CD. Процесс может занять от нескольких минут до нескольких часов в зависимости от объема данных.

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

☑️ Чек-лист оптимизации базы

Выполнено: 0 / 5

Часто задаваемые вопросы (FAQ)

Почему размер файла базы 1С больше, чем сумма размеров всех таблиц в SQL?

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

Можно ли узнать размер базы 1С, не имея прав администратора SQL?

Да, если у вас есть доступ к самой базе 1С в режиме предприятия. Вы можете использовать отчеты встроенные в конфигурацию (например, «Лицензии» или специализированные обработки от партнеров), которые показывают примерный объем данных, считывая статистику через интерфейс платформы, а не напрямую из системных таблиц SQL.

Как часто нужно проверять размер базы данных?

Рекомендуется проводить мониторинг еженедельно. Резкий скачок объема за короткий промежуток времени часто свидетельствует об ошибке в коде (например, циклическая запись в регистр) или о сбое в процессе резервного копирования журналов транзакций.

Влияет ли размер базы на скорость работы 1С?

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