Сколько весит информационная база 1С и что именно занимает место
Содержание
Размер файловой базы 1С — это размер файла 1Cv8.1CD в её каталоге. Размер клиент-серверной базы смотрят в СУБД: в MS SQL командой EXEC sp_spaceused, в PostgreSQL функцией pg_database_size. Внутри самой 1С в платформе 8.3.15 и новее есть метод ПолучитьРазмерДанныхБазыДанных().
Частое заблуждение — считать, что размер выгрузки .dt и есть вес базы. Это не так. Выгрузка сжата архиватором и обычно в несколько раз меньше рабочей базы. По .dt удобно оценивать только объём бэкапа, а не место на диске сервера.
Где лежит файловая база и как узнать её размер
У файловой базы всё хранится в одном файле 1Cv8.1CD. Его размер и есть размер данных. Журнал регистрации лежит рядом, в отдельной папке, и в этот файл не входит.
Как найти каталог базы
- Откройте окно запуска 1С.
- Выделите нужную базу в списке, не запуская её.
- Внизу окна появится строка вида
File="D:\Bases\Buh"— это путь к каталогу. - Откройте этот каталог в Проводнике.
Если база уже открыта, путь виден в Справка → О программе, в строке «Информационная база».
Что смотреть в каталоге
| Объект в каталоге | Что это | Входит в размер данных |
|---|---|---|
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
- Подключитесь к серверу в SSMS.
- Раскройте
Databases, щёлкните правой кнопкой по базе. - Выберите
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 Usage | MS SQL | Данные, журнал транзакций, свободное место | Чтение на SQL Server |
pg_database_size | PostgreSQL | Размер базы на диске | Подключение к серверу |
Запрос по таблицам + ПолучитьСтруктуруХраненияБазыДанных | Клиент-сервер | Какие объекты 1С занимают место | SQL + 1С |
Размер файла .dt | Оба | Объём сжатой выгрузки | Конфигуратор |
Метод из самой 1С удобен, когда доступа к серверу СУБД нет. Пример для внешней обработки, серверный вызов:
РазмерБайт = ПолучитьРазмерДанныхБазыДанных();
Сообщить("Размер данных: " + Формат(РазмерБайт / 1048576, "ЧДЦ=1; ЧГ=0") + " МБ");
Метод доступен в платформе с номером не ниже 8.3.15. В более ранних версиях вызов вызовет ошибку «Процедура или функция с указанным именем не определена».
Журнал регистрации: сколько он весит и как его уменьшить
Журнал регистрации пишет, кто и что делал в базе. На активной базе за пару лет он вырастает до нескольких гигабайт, а с включённым уровнем «Регистрировать все события» — ещё быстрее.
Где лежит журнал
- 📁 Файловая база — папка
1Cv8Logв каталоге базы. - 🖥️ Клиент-серверная база — на сервере 1С, в каталоге кластера:
srvinfo\reg_1541\<идентификатор базы>\1Cv8Log. Идентификатор — это GUID базы, его видно в консоли администрирования серверов в свойствах информационной базы.
Журнал в новом формате хранится в файле 1Cv8.lgd. В старом формате это набор файлов .lgf и .lgp, разбитых по периодам.
Как сократить журнал
- Откройте базу в конфигураторе.
- Выберите
Администрирование → Настройка журнала регистрации. - Нажмите «Сократить…».
- Укажите дату: записи до неё будут удалены. Можно поставить флажок сохранения удаляемых записей в отдельный файл.
- В том же окне выберите уровень регистрации. Для большинства баз достаточно «Регистрировать ошибки, предупреждения и информацию» без детальных примечаний.
Записи журнала после сокращения не восстановить, если вы не выгрузили их в файл. Если журнал нужен для разбора спорных ситуаций или требований безопасности, сначала выгрузите его.
Можно настроить разделение журнала по периодам. Тогда старые периоды легко архивировать, а текущий файл остаётся небольшим.
Как уменьшить размер базы 1С и сжать её
Сначала уберите то, что раздувает базу: старые версии объектов, мёртвые узлы обмена, лишние вложения. Только потом сжимайте. Сжатие без чистки освободит мало места.
Перед любой операцией ниже сделайте резервную копию. Все способы требуют монопольного доступа или нагружают сервер, поэтому выполняйте их вне рабочего времени, когда пользователи вышли из базы.
Файловая база: тестирование и исправление
После удаления данных файл 1Cv8.1CD сам не уменьшается: освободившееся место остаётся внутри файла. Чтобы его вернуть:
- Попросите всех выйти из базы.
- Откройте конфигуратор →
Администрирование → Тестирование и исправление. - Оставьте флажок «Сжатие таблиц информационной базы». Остальные проверки снимите, если вам нужно только сжатие.
- Нажмите «Выполнить».
Второй рабочий вариант — выгрузить базу в .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С, но место на диске занимают именно они.
- ❌ Сжимать базу, не убрав причину роста. Через месяц версии объектов и регистрация изменений снова займут то же место.