Сколько весит информационная база 1С и что именно занимает место

· 9 мин

Содержание

Размер файловой базы 1С — это размер файла 1Cv8.1CD в её каталоге. Размер клиент-серверной базы смотрят в СУБД: в MS SQL командой EXEC sp_spaceused, в PostgreSQL функцией pg_database_size. Внутри самой 1С в платформе 8.3.15 и новее есть метод ПолучитьРазмерДанныхБазыДанных().

Частое заблуждение — считать, что размер выгрузки .dt и есть вес базы. Это не так. Выгрузка сжата архиватором и обычно в несколько раз меньше рабочей базы. По .dt удобно оценивать только объём бэкапа, а не место на диске сервера.

Где лежит файловая база и как узнать её размер

У файловой базы всё хранится в одном файле 1Cv8.1CD. Его размер и есть размер данных. Журнал регистрации лежит рядом, в отдельной папке, и в этот файл не входит.

Как найти каталог базы

  1. Откройте окно запуска 1С.
  2. Выделите нужную базу в списке, не запуская её.
  3. Внизу окна появится строка вида File="D:\Bases\Buh" — это путь к каталогу.
  4. Откройте этот каталог в Проводнике.

Если база уже открыта, путь виден в Справка → О программе, в строке «Информационная база».

Что смотреть в каталоге

Объект в каталогеЧто этоВходит в размер данных
1Cv8.1CDСама база: справочники, документы, регистры, конфигурацияДа
1Cv8Log (папка)Журнал регистрацииНет, хранится отдельно
1Cv8FTxt (папка)Индекс полнотекстового поискаНет
1Cv8tmp.1CD и похожиеВременные файлы, появляются во время работыНет

Щёлкните по 1Cv8.1CD правой кнопкой → Свойства. Поле «Размер» — ответ на вопрос. Размер папки 1Cv8Log смотрите так же: иногда журнал весит больше самой базы.

Когда файловая база перевалила за 10–20 ГБ и в ней одновременно работает больше 5–10 человек, медленные проведения и блокировки — повод думать о переходе на клиент-серверный вариант. Это ориентир, а не жёсткая граница.

Как посмотреть объём базы 1С на MS SQL Server

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

Способ через SQL Server Management Studio

  1. Подключитесь к серверу в SSMS.
  2. Раскройте Databases, щёлкните правой кнопкой по базе.
  3. Выберите Reports → Standard Reports → Disk Usage.

Отчёт покажет общий размер, долю данных и журнала транзакций, свободное место внутри файлов. Соседний отчёт Disk Usage by Top Tables сразу выдаст самые тяжёлые таблицы.

Способ запросом

Выполните в контексте нужной базы:

-- Общий размер, зарезервированное и неиспользуемое место
EXEC sp_spaceused;

-- Файлы базы: данные (ROWS) и журнал транзакций (LOG)
SELECT name,
       type_desc,
       size * 8 / 1024 AS size_mb,
       physical_name
FROM sys.database_files;

sp_spaceused возвращает два набора. В первом database_size — размер файлов вместе с журналом транзакций, unallocated space — свободное место. Во втором — сколько реально занято данными и индексами.

Журнал транзакций (.ldf) часто оказывается больше файла данных. Типичная причина — модель восстановления FULL без регулярного бэкапа журнала. Тогда журнал растёт без ограничений, а данные 1С тут ни при чём.

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

Для PostgreSQL достаточно одного запроса:

SELECT datname,
       pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;

Он покажет все базы на сервере, самые большие сверху.

SQL-запрос: какие таблицы 1С занимают больше всего места

Общий размер ничего не говорит о причине. Чтобы понять, что раздуло базу, нужен список таблиц с объёмом. Для MS SQL:

SELECT TOP (20)
       t.name AS table_name,
       SUM(CASE WHEN ps.index_id IN (0, 1) THEN ps.row_count ELSE 0 END) AS rows_count,
       CAST(SUM(ps.reserved_page_count) * 8 / 1024.0 AS DECIMAL(18, 1)) AS reserved_mb,
       CAST(SUM(ps.used_page_count) * 8 / 1024.0 AS DECIMAL(18, 1)) AS used_mb
FROM sys.dm_db_partition_stats AS ps
JOIN sys.tables AS t ON t.object_id = ps.object_id
GROUP BY t.name
ORDER BY reserved_mb DESC;

Строки считаются только по куче или кластерному индексу (index_id 0 и 1), иначе каждая строка учлась бы столько раз, сколько у таблицы индексов. Место — по всем индексам, потому что они тоже занимают диск.

Аналог для PostgreSQL:

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

Как перевести имена таблиц в объекты 1С

В СУБД таблицы называются _Document123, _InfoRg4567 и так далее. Префикс уже подсказывает тип объекта:

  • 📄 _Document — документы, _Document..._VT — их табличные части;
  • 📚 _Reference — справочники;
  • 📊 _AccumRg — регистры накопления, _AccumRgT — их итоги;
  • 🗂️ _InfoRg — регистры сведений;
  • 🧾 _AccRg — регистры бухгалтерии;
  • 🔁 _...ChngR — регистрация изменений для обменов.

Точное соответствие номера и объекта даёт метод ПолучитьСтруктуруХраненияБазыДанных. Выполните его во внешней обработке в серверной процедуре:

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

Второй параметр Истина просит вернуть имена так, как они записаны в СУБД. Найдите в выводе тяжёлую таблицу из SQL-запроса — рядом будет её имя в конфигурации.

Что обычно раздувает базу

  • 🗃️ Версии объектов. В типовых конфигурациях на БСП это регистр сведений «Версии объектов». Если версионирование включено для всех документов, он легко занимает десятки гигабайт.
  • 🔁 Регистрация изменений. Узел обмена, который давно не синхронизируется, копит записи в таблицах ChngR. Отключённая, но не удалённая РИБ-периферия — классический источник лишнего веса.
  • 📎 Файлы в базе. Сканы, вложения писем, присоединённые файлы, если они хранятся в информационной базе, а не на томах.
  • 📨 Почта и протоколы. Письма встроенного почтового клиента, протоколы обмена с банком и ЭДО.

Способы оценки размера: сравнение

СпособВариант базыЧто показываетПрава
Свойства файла 1Cv8.1CDФайловыйВесь размер данных одним числомДоступ к каталогу базы
ПолучитьРазмерДанныхБазыДанных()ОбаРазмер данных в байтах из самой 1САдминистратор в 1С
sp_spaceused, отчёт Disk UsageMS SQLДанные, журнал транзакций, свободное местоЧтение на SQL Server
pg_database_sizePostgreSQLРазмер базы на дискеПодключение к серверу
Запрос по таблицам + ПолучитьСтруктуруХраненияБазыДанныхКлиент-серверКакие объекты 1С занимают местоSQL + 1С
Размер файла .dtОбаОбъём сжатой выгрузкиКонфигуратор

Метод из самой 1С удобен, когда доступа к серверу СУБД нет. Пример для внешней обработки, серверный вызов:

РазмерБайт = ПолучитьРазмерДанныхБазыДанных();
Сообщить("Размер данных: " + Формат(РазмерБайт / 1048576, "ЧДЦ=1; ЧГ=0") + " МБ");

Метод доступен в платформе с номером не ниже 8.3.15. В более ранних версиях вызов вызовет ошибку «Процедура или функция с указанным именем не определена».

Какой у вас вариант базы и доступ?

Журнал регистрации: сколько он весит и как его уменьшить

Журнал регистрации пишет, кто и что делал в базе. На активной базе за пару лет он вырастает до нескольких гигабайт, а с включённым уровнем «Регистрировать все события» — ещё быстрее.

Где лежит журнал

  • 📁 Файловая база — папка 1Cv8Log в каталоге базы.
  • 🖥️ Клиент-серверная база — на сервере 1С, в каталоге кластера: srvinfo\reg_1541\<идентификатор базы>\1Cv8Log. Идентификатор — это GUID базы, его видно в консоли администрирования серверов в свойствах информационной базы.

Журнал в новом формате хранится в файле 1Cv8.lgd. В старом формате это набор файлов .lgf и .lgp, разбитых по периодам.

Как сократить журнал

  1. Откройте базу в конфигураторе.
  2. Выберите Администрирование → Настройка журнала регистрации.
  3. Нажмите «Сократить…».
  4. Укажите дату: записи до неё будут удалены. Можно поставить флажок сохранения удаляемых записей в отдельный файл.
  5. В том же окне выберите уровень регистрации. Для большинства баз достаточно «Регистрировать ошибки, предупреждения и информацию» без детальных примечаний.

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

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

Как уменьшить размер базы 1С и сжать её

Сначала уберите то, что раздувает базу: старые версии объектов, мёртвые узлы обмена, лишние вложения. Только потом сжимайте. Сжатие без чистки освободит мало места.

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

Файловая база: тестирование и исправление

После удаления данных файл 1Cv8.1CD сам не уменьшается: освободившееся место остаётся внутри файла. Чтобы его вернуть:

  1. Попросите всех выйти из базы.
  2. Откройте конфигуратор → Администрирование → Тестирование и исправление.
  3. Оставьте флажок «Сжатие таблиц информационной базы». Остальные проверки снимите, если вам нужно только сжатие.
  4. Нажмите «Выполнить».

Второй рабочий вариант — выгрузить базу в .dt и загрузить её обратно в новый пустой каталог. База пересобирается с нуля, и файл получается компактным. Загрузка .dt заменяет все данные, поэтому выполняйте её только в новую пустую базу или когда точно уверены в выгрузке.

MS SQL: чистка журнала транзакций и сжатие файлов

Если раздулся журнал транзакций, решение зависит от модели восстановления:

  • 🔹 SIMPLE — журнал усекается автоматически. Если он большой, сожмите файл командой ниже.
  • 🔹 FULL — настройте регулярный бэкап журнала транзакций. Без него журнал будет расти снова, сколько его ни сжимай.
-- Логическое имя файла журнала смотрите в sys.database_files
DBCC SHRINKFILE (N'buh_log', 1024);  -- целевой размер в МБ

Сжимать файл данных (DBCC SHRINKDATABASE, SHRINKFILE по ROWS) регулярно не стоит. Операция фрагментирует индексы, и запросы 1С начинают работать медленнее. Если всё же сжали — перестройте индексы в плане обслуживания.

PostgreSQL: VACUUM

Обычный VACUUM помечает место от удалённых строк как свободное, но размер на диске не уменьшает. Вернуть место операционной системе может VACUUM FULL. Он переписывает таблицы целиком и блокирует их на всё время работы, поэтому запускайте его только когда пользователи вышли из базы.

Частые ошибки при оценке размера базы

  • ❌ Смотреть размер не той базы на SQL. Имя базы в списке 1С и имя базы в СУБД часто различаются. Сверяйте по полю «База данных» в свойствах информационной базы в кластере.
  • ❌ Путать размер файлов и занятое место. Файл данных на SQL может быть выделен с запасом. Важна строка с занятым местом, а не размер .mdf.
  • ❌ Забывать про журнал транзакций и журнал регистрации. Оба лежат вне данных 1С, но место на диске занимают именно они.
  • ❌ Сжимать базу, не убрав причину роста. Через месяц версии объектов и регистрация изменений снова займут то же место.

Частые вопросы о размере базы 1С

Почему после удаления документов размер базы не уменьшился?
Место освобождается внутри файла, но сам файл не сжимается. В файловой базе запустите тестирование с флажком сжатия, на MS SQL — сжатие файла, на PostgreSQL — VACUUM FULL.
Входит ли журнал регистрации в размер 1Cv8.1CD?
Нет. Журнал хранится отдельно в папке 1Cv8Log, поэтому её размер нужно смотреть отдельно.
Сколько места нужно для бэкапа базы 1С?
Сжатая выгрузка .dt обычно в несколько раз меньше рабочей базы. Для полного бэкапа средствами СУБД закладывайте объём, сопоставимый с занятым местом данных.
Почему размер базы в SQL больше, чем показывает 1С?
В размер файлов SQL входят журнал транзакций и свободное зарезервированное место. Метод ПолучитьРазмерДанныхБазыДанных считает только данные.
Можно ли уменьшить базу, просто удалив старые документы?
Удаление документов с движениями нарушает остатки и итоги в прошлых периодах. Для этого есть штатная процедура свёртки базы в типовых конфигурациях, и её запускают только на копии после проверки.