Администрирование · 11 мин
Как узнать размер таблиц в базе 1С
Способы узнать размер таблиц базы 1С: запросы в SQL Server и PostgreSQL, стандартные отчёты, обработки. Как найти самые большие таблицы и сократить объём базы.
Когда база 1С начинает занимать десятки гигабайт, первый вопрос администратора — какие именно таблицы съедают место. Без этой информации невозможно грамотно спланировать чистку: свёртку итогов, удаление устаревших документов или очистку регистров сведений. В зависимости от того, работает база в файловом или клиент-серверном режиме, инструменты различаются.
В клиент-серверном варианте (MS SQL Server, PostgreSQL) размер таблиц смотрят прямо на уровне СУБД — это самый быстрый и точный способ. В файловой базе придётся использовать штатные механизмы платформы и обработки. Ниже разобраны оба сценария, а также способы сопоставить технические имена таблиц СУБД с объектами конфигурации.
Зачем вообще измерять размер таблиц
Рост базы почти никогда не бывает равномерным. Обычно 80% объёма занимают 5–10 таблиц: регистры сведений с историей изменений, журналы регистрации, регистры бухгалтерии и накопления за все годы работы, таблицы вложений и версий файлов. Найдя их, можно точечно решить проблему, а не сжимать базу целиком.
Вторая причина — диагностика медленной работы. Большие таблицы дольше сканируются, дольше реиндексируются, а запросы к ним чаще уходят в полное сканирование вместо поиска по индексу. Зная размер, администратор понимает, где нужны регламентные операции и где свёртка даст реальный эффект.
Как узнать размер таблиц в MS SQL Server
Если база 1С развёрнута на MS SQL Server, самый быстрый способ — открыть SQL Server Management Studio (SSMS), подключиться к серверу и выполнить запрос к базе данных. Встроенная процедура sp_spaceused показывает размер конкретной таблицы, а запрос к системным представлениям — список всех таблиц с сортировкой по размеру.
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Запрос возвращает имена физических таблиц вида _AccumReg12345, _InfoRg6789 и их размер в мегабайтах. Выполнять его можно под учётной записью с правами на чтение системных представлений — никаких изменений в данных он не производит, поэтому безопасен даже в рабочее время.
Альтернатива без запросов — стандартный отчёт SSMS: правый клик по базе → «Отчёты» → «Стандартные отчёты» → «Использование диска по таблицам». Отчёт покажет количество строк, зарезервированное и фактически использованное место для каждой таблицы.
- 1Откройте SSMS и подключитесь к серверу с базой 1С
- 2Выберите нужную базу данных в обозревателе объектов
- 3Откройте новое окно запроса и выполните SELECT по sys.tables или отчёт об использовании диска
- 4Отсортируйте результат по убыванию размера и выпишите топ-10 таблиц
Как узнать размер таблиц в PostgreSQL
В PostgreSQL, который часто используется с 1С на Linux, размер таблиц определяют функциями pg_total_relation_size() (полный размер с индексами) и pg_relation_size() (только данные). Запрос выполняется в pgAdmin или через psql.
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;Функция pg_size_pretty выводит размер в читаемом виде — мегабайтах и гигабайтах. Если нужен размер конкретной таблицы, достаточно выполнить SELECT pg_size_pretty(pg_total_relation_size('_inforg123'));.
Учтите, что после массового удаления данных физический размер таблицы в PostgreSQL не уменьшается автоматически — место остаётся зарезервированным. Для возврата места системе нужен VACUUM FULL или реиндексация, что требует остановки работы пользователей с этой таблицей.
Как сопоставить имена таблиц СУБД с объектами 1С
Физические имена вида _Document234 ничего не говорят о том, какой это документ. Для расшифровки платформа 1С предоставляет функцию встроенного языка ПолучитьСтруктуруХраненияБазыДанных(). Она возвращает таблицу соответствий: объект метаданных — имя таблицы в СУБД.
Практический путь: запустить в конфигураторе или через внешнюю обработку код, который выгружает структуру хранения в табличный документ или файл, затем найти в нём нужное имя. Существуют готовые публичные обработки «Структура хранения базы данных», которые делают это в один клик и работают в режиме предприятия.
Также полезно помнить типовые префиксы: _Document — документы, _Reference — справочники, _AccumReg — регистры накопления, _InfoRg — регистры сведений, _Acc — регистры бухгалтерии. По префиксу и номеру уже можно сузить поиск до конкретного раздела конфигурации.
Часто в топе по размеру оказываются не учётные регистры, а служебные таблицы: журнал регистрации, хранилище версий объектов, история данных. Их очистка даёт быстрый эффект и не затрагивает учётные данные.
Размер таблиц в файловой базе 1С
В файловом режиме вся база — один файл 1Cv8.1CD, и напрямую увидеть размер отдельных таблиц нельзя. Здесь применяют косвенные методы. Первый — штатная обработка «Информация о базе данных» или отчёт о размерах, если он есть в конфигурации (в некоторых типовых решениях есть раздел администрирования с оценкой объёма данных).
Второй способ — внешние обработки анализа размера таблиц файловой базы, которые читают внутреннюю структуру файла 1CD. Их запускают в режиме предприятия; обработка показывает список таблиц с размерами. Такие инструменты требуют монопольного доступа к базе или работают с копией файла.
Третий, грубый, но надёжный метод — выгрузка в DT и сравнение: последовательно удалять (в копии базы!) группы данных и смотреть, как меняется размер файла после тестирования и исправления со сжатием. Это долго, но даёт точную картину вклада каждого раздела.
Что делать с самыми большими таблицами
После того как топ таблиц найден, действия зависят от их типа. Регистры накопления и бухгалтерии за старые периоды сворачивают штатной обработкой «Свёртка информационной базы» — она формирует документы ввода остатков на дату свёртки и удаляет старые движения. Операцию обязательно выполняют на копии и проверяют совпадение остатков.
Регистры сведений с историей (курсы валют, история изменений, версии объектов) чистят регламентными заданиями или вручную за ненужные периоды. Журнал регистрации сокращают через настройку глубины хранения в конфигураторе. Таблицы вложений и файлов — переносят в тома хранения файлов, если конфигурация это поддерживает.
После удаления данных в клиент-серверной базе выполняют сжатие (shrink) на уровне СУБД или перестроение индексов — иначе физический размер файлов базы данных не уменьшится, хотя свободное место внутри появится.
Как выбрать действие
Частые ошибки при оценке размера таблиц
Типичная ошибка — судить о содержимом таблицы только по её физическому имени или номеру, не расшифровав соответствие объекту конфигурации. Удаление «большой таблицы» средствами СУБД в обход 1С гарантированно разрушает базу: платформа хранит связи между таблицами и не переживёт ручного вмешательства.
Вторая ошибка — путать зарезервированное и использованное место. После массовых удалений таблица может показывать прежний размер, хотя реальных данных в ней уже мало. Смотрите оба показателя и не паникуйте раньше времени.
Третья ошибка — игнорировать индексы. В некоторых базах индексы занимают до половины объёма таблицы. Перестроение индексов и обновление статистики иногда освобождают заметное место без всякой свёртки данных.
Как проверить результат чистки
После свёртки или очистки повторно выполните тот же запрос к СУБД и сравните размеры целевых таблиц до и после. Размер таблицы данных должен уменьшиться соразмерно удалённому объёму; если он не изменился — вероятно, удаление не выполнилось или место не освобождено.
Обязательная проверка — сверка учётных остатков: оборотно-сальдовая ведомость, остатки по складу и взаиморасчётам на дату свёртки должны совпасть с данными до операции. Расхождение означает ошибку свёртки, и рабочую базу трогать нельзя.
Как проверить результат
Уменьшился пропорционально удалённым данным
Не изменился после удаления — данные не удалены или нужно сжатие
Совпадают с отчётами до свёртки
Расхождения — свёртка выполнена с ошибкой
Документы и отчёты открываются без ошибок
Ошибки отсутствующих данных — требуется восстановление из копии
Что важно запомнить
Размер таблиц смотрят на уровне СУБД запросами к системным представлениям, а технические имена расшифровывают через ПолучитьСтруктуруХраненияБазыДанных(). Найдя топ таблиц, действуйте штатными средствами 1С: свёртка, очистка журналов, тома файлов. Все операции — только после резервной копии и с проверкой остатков.
Частые вопросы
Можно ли узнать размер таблиц, не имея доступа к SQL-серверу?
Да, частично. Из режима предприятия или конфигуратора доступна структура хранения базы и количество записей в таблицах через запросы. Количество записей не равно размеру в байтах, но позволяет выявить самые объёмные разделы. Для точных цифр в мегабайтах доступ к СУБД всё же нужен.
Какая таблица в 1С обычно самая большая?
Универсального ответа нет: в торговых базах это чаще регистры накопления по товарам и продажам, в бухгалтерских — регистр бухгалтерии, а в базах с активным обменом — таблицы регистрации изменений и журнал регистрации. Проверять нужно именно свою базу запросом к СУБД.
Уменьшится ли файл базы после удаления документов?
Не автоматически. В файловой базе нужно выполнить тестирование и исправление со сжатием таблиц, в клиент-серверной — сжатие (shrink) средствами СУБД. До этого момента место внутри файла помечается свободным, но файл не уменьшается.
Опасно ли выполнять запросы к системным представлениям СУБД в рабочее время?
Запросы на чтение к sys.tables, pg_statio_user_tables и подобным представлениям безопасны и почти не нагружают сервер. Опасны только операции изменения: shrink, реиндексация, vacuum full — их планируют на нерабочее время.
Как понять, какому объекту 1С соответствует таблица _InfoRg12345?
Используйте функцию ПолучитьСтруктуруХраненияБазыДанных() — она возвращает соответствие имён таблиц СУБД и объектов метаданных. Удобнее всего выгрузить её через готовую обработку структуры хранения и найти там нужное имя поиском.
Почему сумма размеров таблиц меньше размера файла базы данных?
Файл базы содержит также свободное зарезервированное место, журнал транзакций (в MS SQL) и служебные структуры СУБД. Особенно заметна разница после массовых удалений: данные удалены, но файл не сжат.