К статье
Практический материал

Администрирование · 9 мин

Как узнать размер базы данных 1С

Способы узнать размер базы 1С: свойства файла 1Cv8.1CD, запросы в MS SQL и PostgreSQL, мониторинг роста. Пошаговые инструкции и проверка результата.

Размер базы 1С нужно знать при планировании места на диске, перед резервным копированием, при оценке времени выгрузки и при диагностике замедления работы. Способ проверки зависит от режима работы: в файловом варианте вся база хранится в одном файле 1Cv8.1CD, а в клиент-серверном данные распределены по таблицам СУБД, и простой просмотр файлов ничего не даст.

Путают чаще всего два разных показателя: физический размер файлов на диске и логический объём данных внутри базы. Файл может занимать 50 ГБ, хотя реальных данных в нём на 30 ГБ — остальное занимают индексы, служебные структуры и свободное пространство после удаления объектов. Для точной оценки используются разные методы, и ниже разобраны все рабочие варианты.

Как определить режим работы базы

Прежде чем искать размер, убедитесь, какой вариант работы используется. Откройте список информационных баз в окне запуска 1С, выделите нужную базу и нажмите «Изменить» — на втором шаге мастера будет указано: «На данном компьютере или на компьютере в локальной сети» (файловый режим) или «На сервере 1С:Предприятия» (клиент-серверный).

Также режим виден прямо в строке подключения в списке баз: для файловой базы указывается путь вида File="D:\Bases\Trade", для серверной — параметры Srvr и Ref. Если база опубликована на веб-сервере, уточните у администратора, к какому серверу 1С она подключена, — за ним почти всегда стоит клиент-серверный вариант.

Размер файловой базы: файл 1Cv8.1CD

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

Учитывайте, что рядом могут лежать служебные файлы: журнал регистрации (каталог 1Cv8Log), временные файлы, файлы блокировок. Они не входят в основной файл, но журнал регистрации за несколько лет может занимать заметный объём — его стоит измерить отдельно, особенно если считаете место под резервные копии.

Почему файл больше, чем реальных данных

При удалении объектов 1С помечает записи как свободные, но физически файл не сжимает. Если вы удалили старые документы на 10 ГБ, файл останется прежнего размера, пока не выполните сжатие. Поэтому для оценки «чистого» объёма ориентируйтесь на размер выгрузки в DT или на размер базы после тестирования и исправления.

Размер базы в MS SQL Server

В клиент-серверном варианте на MS SQL откройте SQL Server Management Studio, подключитесь к серверу и найдите нужную базу в списке. Правой кнопкой мыши выберите «Свойства» — на вкладке «Общие» указан общий размер базы и доступное свободное пространство внутри файлов.

Для детальной картины по таблицам используйте стандартный отчёт: правой кнопкой по базе — «Отчёты» — «Стандартные отчёты» — «Использование диска таблицей» (Disk Usage by Table). Отчёт покажет, какие таблицы занимают больше всего места, включая индексы. Это быстрый способ найти «тяжёлые» объекты — чаще всего это регистры накопления, журналы документов и таблицы версий объектов.

sql
SELECT t.NAME AS TableName, SUM(a.total_pages) * 8 / 1024 AS SizeMB FROM sys.tables t JOIN sys.indexes i ON t.object_id = i.object_id JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id JOIN sys.allocation_units a ON p.partition_id = a.container_id GROUP BY t.NAME ORDER BY SizeMB DESC

Запрос выше возвращает список таблиц с размером в мегабайтах по убыванию. Размер самой базы целиком можно получить функцией: SELECT DB_NAME(), SUM(size) * 8 / 1024 AS SizeMB FROM sys.database_files. Не забудьте, что рядом с файлом данных (.mdf) лежит журнал транзакций (.ldf) — он может быть сопоставим по размеру с данными при модели полного восстановления.

Размер базы в PostgreSQL

Для PostgreSQL подключитесь к серверу через pgAdmin или psql и выполните запрос SELECT pg_size_pretty(pg_database_size('имя_базы')); — он вернёт суммарный размер базы в читаемом виде. Размер отдельных таблиц показывает запрос с функцией pg_total_relation_size() по таблицам схемы public.

sql
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 20;

Функция pg_total_relation_size учитывает данные таблицы, индексы и TOAST-объекты, поэтому её сумма по всем таблицам близка к размеру базы. Если цифры пугают, проверьте, не накопились ли «раздутые» таблицы из-за редких VACUUM — в PostgreSQL удалённые строки тоже занимают место до очистки.

Косвенные способы: выгрузка DT и пакетный режим

Если доступа к СУБД нет, оцените объём через выгрузку информационной базы в файл DT (Конфигуратор — «Администрирование» — «Выгрузить информационную базу»). Размер полученного .dt-файла не равен размеру базы, но даёт нижнюю границу: обычно выгрузка меньше за счёт сжатия и отсутствия индексов.

Для автоматизации контроля используйте пакетный режим конфигуратора или скрипты на стороне СУБД с записью результата в файл. Регулярный сбор значений раз в неделю позволяет построить динамику роста и заранее спланировать расширение диска — это надёжнее, чем разовые замеры «когда вспомнили».

Порядок действий для файловой базы
  1. 1
    Откройте список баз и скопируйте путь к каталогу базы
  2. 2
    В проводнике найдите файл 1Cv8.1CD и откройте его свойства
  3. 3
    Зафиксируйте размер файла и размер каталога 1Cv8Log отдельно
  4. 4
    При необходимости узнать чистый объём — выполните выгрузку в DT и сравните размеры

Что делать, если база выросла слишком сильно

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

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

Типичные ошибки
01
Оценивать серверную базу по размеру каталога на диске без учёта журнала транзакций — итог занижен в разы
02
Считать, что удаление документов уменьшит файл базы — без сжатия размер не изменится
03
Путать размер выгрузки DT с размером базы — выгрузка обычно заметно меньше
04
Запускать тестирование и исправление в рабочее время — пользователи будут отключены, операция на большой базе идёт часами

Как проверить результат и настроить контроль

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

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

Контрольные точки

Как проверить результат

Сумма размеров файлов базы и журнала в СУБД
Норма

Соответствует значению в свойствах базы

Тревожный признак

Большое расхождение — проверьте наличие дополнительных файловых групп

Динамика роста за месяц
Норма

Плавный прирост, соразмерный объёму документов

Тревожный признак

Резкие скачки без причины — ищите источник в версионировании или обменах

Свободное место на диске
Норма

Не меньше размера базы

Тревожный признак

Меньше половины размера базы — высокий риск сбоя обслуживания

Итог

Что важно запомнить

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

Частые вопросы

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

1С и СУБД помечают освободившееся место как свободное внутри файла, но не возвращают его операционной системе. Для физического уменьшения файловой базы выполните тестирование и исправление с реструктуризацией или выгрузку и загрузку через DT; для серверной — штатные процедуры сжатия СУБД после консультации с администратором.

Размер выгрузки DT равен размеру базы?

Нет. Файл DT обычно заметно меньше: он содержит данные без индексов и части служебных структур и дополнительно сжимается. Его можно использовать как нижнюю оценку объёма чистых данных, но не как точный показатель.

Как узнать, какие таблицы занимают больше всего места?

В MS SQL используйте стандартный отчёт «Использование диска таблицей» или запрос к sys.tables с суммированием страниц. В PostgreSQL — запрос с pg_total_relation_size по таблицам. В файловой базе прямого инструмента нет, ориентироваться можно по типовым причинам роста: версии объектов, регистры, вложения.

Нужно ли учитывать журнал транзакций при расчёте размера?

Да. В MS SQL файл журнала (.ldf) при модели полного восстановления может вырасти до размеров, сопоставимых с данными. Смотрите суммарный размер файлов базы через sys.database_files, а не только файл данных.

Можно ли узнать размер базы без доступа к серверу и конфигуратору?

Только косвенно: попросите администратора выполнить замер или оцените объём по размеру последней резервной копии — она обычно близка к размеру данных с учётом сжатия. Штатных средств просмотра размера из пользовательского режима 1С нет.

Как часто нужно контролировать размер базы?

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