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

15.05.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Отчет Размеры таблиц SQL:
.erf 9,81Kb
253
253 Скачать (1 SM) Купить за 1 850 руб.

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в 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С v8.3 1С:Управление торговлей 11 Абонемент ($m)

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

1 стартмани

10.04.2025    756    4    aximo    13    

7

Статистика базы данных Программист Платформа 1С v8.3 Бесплатно (free)

Обработка по отображению количества объектов в базе (документов и справочников). Позволяет проанализировать количество всех справочников в базе, а также документов за период (если период не заполнен, покажет общее количество документов) и перейти в форму списка каждого объекта.

15.03.2025    663    46    user914355    0    

5

Статистика базы данных Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

19.12.2024    777    13    smirnov0ser    0    

5

Статистика базы данных Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Анализ количества записей регистров/документов/справочников, в том числе в динамике.

13.11.2024    1482    162    evgeni-red    3    

8

Статистика базы данных Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

«Навигатор метаданных» поможет изучать структуру данных конфигурации, переходить по связям между объектами конфигурации.Для аналитиков и разработчиков.

1 стартмани

11.09.2024    1596    22    m_kislyak    3    

9

Статистика базы данных Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Абонемент ($m)

Сбор статистики информационной базы в виде отчета - наименование конфигурации, версия, количество записей документов, регистров сведений, справочников, обменов.

1 стартмани

10.09.2024    4075    56    pahno    9    

9

Статистика базы данных Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Данная обработка - алгоритм предлагает оценку вашей базы на количество тех или иных типов документов с их реквизитами.

6 стартмани

12.08.2024    1129    0    aximo    2    

3

Статистика базы данных Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Объединен, унифицирован и значительно улучшен функционал двух исходных обработок для контроля размеров таблиц хранения 1С в серверных базах: https://infostart.ru/1c/tools/128362/ (для MS SQL) и https://infostart.ru/1c/tools/978816/ (для PG SQL).

1 стартмани

16.05.2024    2434    67    yuraos    11    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 78 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().Выгрузить();
Показать
maxpiter; aleksey2; hydro2588_2015; Alias; user811769; user612295_death4321; +6 Ответить
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 53 10.06.19 18:00 Сейчас в теме
(4)
При запуске в толстом клиенте с машины, с сервером 1С с выдается сообщение "Не найдено поле замены"ИмяТаблицыХранения"".



А можно уточнить, какие настройки СКД используются? Стандартные? Имя пользователя и пароль указываете?
7. Stanley211 13.06.19 11:50 Сейчас в теме
Если подскажите, где можно посмотреть настройки СКД, то сообщу конечно. Наш 1С программист в отпуске до июля... Проверил ещё на втором тестовом сервере, в копии базы, там Ваша обработка корректно отработала. График вышел и таблица с размерами также.
8. SnubbyAston 53 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 334 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 811 07.05.24 12:58 Сейчас в теме
(12) Наверное нужно умножать, а не делить размер?
Оставьте свое сообщение