Размеры таблиц SQL

15.05.19

База данных - Статистика базы данных

Сколько места занимает справочник? Почему такая большая база? Отчет покажет!

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Отчет Размеры таблиц SQL:
.erf 9,81Kb
265 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в SQL по размеру таблиц. Сопоставляем по именам. Отчет делает именно это. Но написан на СКД. А значит можно рисовать графики, группировки и т.п.

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

Особенности работы

Подготавливается два набора данных: 

1. ПолучитьСтруктуруХраненияБазыДанных();

2. Запрос через SQLCMD с выводом результата во временный файл и парсингом этого файла.

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

При компоновке результата формируется CMD-файл, который выполняет команду sqlcmd и формирует файл-результат. По умолчанию, в каталог временных файлов на сервере. Но можно поменять серверный путь в параметре Путь к временным файлам. 

Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности. 

Протестировано на версии платформы 1С 8.3.12.1714, MS SQL Server 14, Microsoft (R) SQL Server Command Line Tool Version 12.0.2000.8 NT. Сервер 1С и Сервер SQL на одной машине.

P.S. Возможно, есть и другие варианты решения задачи)

Вступайте в нашу телеграмм-группу Инфостарт

Отчет Размер БД MS SQL sqlcmd

См. также

Статистика базы данных Разработчик 1С:Предприятие 8 Россия Абонемент ($m)

Внешняя обработка для комплексной диагностики информационной базы 1С без прямого подключения к SQL Server или другой СУБД. Позволяет определить, какие объекты 1С занимают основной объём базы, сколько записей содержат, какова средняя интенсивность накопления данных за последние 24 месяца, сколько КБ приходится на одну запись, а также увидеть связанные таблицы хранения и структуру индексов. Расчёт выполняется пакетно с отображением прогресса и возможностью остановки. В результате формируется единая таблица по объектам метаданных с итоговыми показателями и возможностью выгрузки результатов в Excel. Подходит разработчикам 1С, администраторам и специалистам, которым необходимо быстро понять структуру и точки роста большой информационной базы.

4 стартмани

26.10.2026    446    1    VVLab    2    

3

Статистика базы данных Поиск данных Инструменты администратора БД Администрирование Разработчик Аналитик 1С 8.3 1С 8.5 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Универсальная внешняя обработка для проверки «здоровья» любой базы 1С. За один запуск выполняет 26 проверок логической целостности данных и выдаёт отчёт: оценку состояния базы от 0 до 100, список проблем по важности (критично / предупреждение / информация), расшифровку до конкретных документов и записей и рекомендации, что делать. Находит: проведённые документы без движений и непроведённые с движениями, движения с «битым» регистратором, отрицательные остатки, проводки без счёта, дубли номеров и кодов, документы с датой в будущем, отключённые и отставшие итоги, зависшие очереди обмена, администраторов без пароля и другое. Подходит для любой конфигурации: БП, УТ, КА, ERP, УНФ, ЗУП, Розница, УТ 10.3, УПП, отраслевые и самописные, с БСП и без. Платформа 8.3.10 и выше, управляемые и обычные формы. Ничего не изменяет в базе — только читает данные.

7320 руб.

20.10.2026    559    0    0    

3

Инструменты администратора БД Статистика базы данных Системный администратор 1С 8.3 Абонемент ($m)

База растёт, диски кончаются, бэкап перестал влезать в ночь — а на вопрос «что именно занимает место?» никто не может ответить. Конфигуратор молчит: самые тяжёлые таблицы часто вообще не видны в дереве метаданных. Обработка строит полную карту объёмов базы за несколько минут: все объекты метаданных с табличными частями, имена таблиц СУБД, служебные таблицы платформы отдельным списком и готовый SQL-скрипт точных размеров для MS SQL и PostgreSQL. К СУБД не обращается — только платформенные средства, только чтение.

10 стартмани

03.08.2026    2686    32    nedomolkov.ivan    9    

4

Статистика базы данных Разработчик 1С 8.3 Абонемент ($m)

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

1 стартмани

27.04.2026    1874    15    archi517    0    

7

Статистика базы данных Разработчик Пользователь 1С 8.3 Абонемент ($m)

По указанному периоду показывает, какие виды документов введены в информационную базу, и также количество введенных документов.

1 стартмани

03.03.2026    1346    8    burgerkirg    0    

5

Статистика базы данных Системный администратор Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Библиотека стандартных подсистем Абонемент ($m)

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

3 стартмани

27.10.2025    3598    112    gebungen    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 77 15.05.19 16:33 Сейчас в теме
Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности.
P.S. Возможно, есть и другие варианты решения задачи)

Взаимодействие 1С с ADODB
2. SlavaKron 15.05.19 16:40 Сейчас в теме
Все такого рода обработки делают почти одно и то же.
	Соединение = Новый COMОбъект("ADODB.Connection");
	СтрокаПодключения = "Provider=SQLOLEDB;Server=" + СерверSQL + ";DataBase=" + БазаSQL + ";User ID=" + ПользовательSQL + ";Password=" + Пароль + ";";
	Попытка
		Соединение.Open(СтрокаПодключения);
	Исключение
		Соединение = Неопределено;
		Возврат
	КонецПопытки;
	Соединение.CommandTimeout = 0;	
	ТекстЗапроса =
	"CREATE TABLE #temp (
	|	table_name nvarchar(128),
	|	row_count INT,
	|	reserved_size varchar(18),
	|	data_size varchar(18),
	|	index_size varchar(18),
	|	unused_size varchar(18))
	|SET NOCOUNT ON
	|INSERT #temp
	|EXEC sp_msforeachtable 'sp_spaceused ''?'''
	|
	|SELECT
	|	*
	|FROM #temp
	|
	|DROP TABLE #temp";	
	
	Выборка = Соединение.Execute(ТекстЗапроса);
	Данные = Выборка.GetRows().Выгрузить();
Показать
Programador1C; maxpiter; aleksey2; hydro2588_2015; Alias; user811769; user612295_death4321; +7 – Ответить
3. Painted 49 21.05.19 15:26 Сейчас в теме
(2) Я бы в начале запроса тоже "DROP TABLE #temp" поставил. Перед "CREATE TABLE #temp"
4. Stanley211 05.06.19 16:41 Сейчас в теме
Сервер 1С и SQL на разных машинах. При запуске в толстом клиенте с машины, с сервером 1С с выдается сообщение "Не найдено поле замены"ИмяТаблицыХранения"".
5. Stanley211 07.06.19 14:54 Сейчас в теме
(4)Да на тестовой машине та же ошибка, сервер 1С и SQL на одном ПК, платформа 8.3.12.1714, MS SQL Server 16...
6. SnubbyAston 52 10.06.19 18:00 Сейчас в теме
(4)
При запуске в толстом клиенте с машины, с сервером 1С с выдается сообщение "Не найдено поле замены"ИмяТаблицыХранения"".



А можно уточнить, какие настройки СКД используются? Стандартные? Имя пользователя и пароль указываете?
7. Stanley211 13.06.19 11:50 Сейчас в теме
Если подскажите, где можно посмотреть настройки СКД, то сообщу конечно. Наш 1С программист в отпуске до июля... Проверил ещё на втором тестовом сервере, в копии базы, там Ваша обработка корректно отработала. График вышел и таблица с размерами также.
8. SnubbyAston 52 13.06.19 16:15 Сейчас в теме
(7)
Если подскажите, где можно посмотреть настройки СКД, то сообщу конечно.

Если конфигурация типовая попробуйте выбрать пункт меню Еще -> Стандартные настройки,
Или Еще -> Прочее -> Стандартные настройки

Если самописная, то возможно где то в меню Еще возможно есть пункт "Установить стандартные настройки".

А на двух серверах ваших, на которых НЕ работает обработка, сообщение об ошибке одинаковое? "Не найдено поле замены"ИмяТаблицыХранения""?
9. Salexey 15.07.19 20:23 Сейчас в теме
здесь удобнее таблицы группируются по объектам https://infostart.ru/public/1093355/
11. Tlrd 13.05.20 18:47 Сейчас в теме
(9)
У него не работает .На УПП выдаёт ошибку :<<?>>Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных

Не советую автор отключил комментарии
10. AlexandrSmith 69 08.10.19 21:40 Сейчас в теме
Тема конечно избитая, но интерес к ней не угас. И автор довольно хорошо все описал.
Alex1053669; +1 – Ответить
12. ImHunter 351 27.08.21 09:39 Сейчас в теме
Похоже, размер индексов не выводится. С ним было бы еще информативнее.

И немного допилил запрос из (2), чтобы размеры вывести числами в МБ (а не строками).
CREATE TABLE #temp (
table_name NVARCHAR(128)
,row_count INT
,reserved_size VARCHAR(18)
,data_size VARCHAR(18)
,index_size VARCHAR(18)
,unused_size VARCHAR(18)
,reserved_size_int FLOAT
,data_size_int FLOAT
,index_size_int FLOAT
,unused_size_int FLOAT
,used_size_int FLOAT
)

SET NOCOUNT ON

INSERT #temp (
table_name
,row_count
,reserved_size
,data_size
,index_size
,unused_size
)
EXEC sp_msforeachtable 'sp_spaceused ''?'''

UPDATE #temp
SET reserved_size_int = CAST(REPLACE(reserved_size, ' KB', '') AS FLOAT) / 1000
,data_size_int = CAST(REPLACE(data_size, ' KB', '') AS FLOAT) / 1000
,index_size_int = CAST(REPLACE(index_size, ' KB', '') AS FLOAT) / 1000
,unused_size_int = CAST(REPLACE(unused_size, ' KB', '') AS FLOAT) / 1000
,used_size_int = CAST(REPLACE(data_size, ' KB', '') AS FLOAT) / 1000 + CAST(REPLACE(index_size, ' KB', '') AS FLOAT) / 1000

SELECT *
FROM #temp
ORDER BY 1

DROP TABLE #temp
Показать
13. frkbvfnjh 825 07.05.24 12:58 Сейчас в теме
(12) Наверное нужно умножать, а не делить размер?
14. Tarlich 89 01.10.26 09:48 Сейчас в теме
в начале работала ,что то стала ругаться о невозможности записать в темповскую папку
Для отправки сообщения требуется регистрация/авторизация