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

15.05.19

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

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

Скачать исходный код

Наименование Файл Версия Размер
Отчет Размеры таблиц SQL:
.erf 9,81Kb
241
.erf 9,81Kb 241 Скачать

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в 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

См. также

Физический размер таблиц (MSSQL)

Инструменты администратора БД Статистика базы данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Инструмент для получения физического размера таблиц ИБ (MSSQL)

1 стартмани

09.01.2024    1504    12    ImHunter    4    

7

Анализ документов: свертка базы, автотесты, динамика роста базы

Статистика базы данных Инструментарий разработчика Тестирование QA Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

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

3 стартмани

29.12.2023    1193    8    RustIG    5    

8

Анализ использования номенклатуры

Статистика базы данных Логистика, склад и ТМЦ Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

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

1 стартмани

26.10.2023    772    12    dimanich70    0    

4

Сведения о присоединенных файлах

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

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

2 стартмани

24.10.2023    1700    37    ixijixi    6    

20

История фоновых заданий

Журнал регистрации Статистика базы данных HighLoad оптимизация Конфигурации 1cv8 Абонемент ($m)

Удобный отчет по выполнению фоновых заданий в 1С с разбивкой по разным критериям, например по срокам, в какой последовательности, выполнение дольше всех, сколько одновременно и так далее.

5 стартмани

04.09.2023    863    6    Maxiko    0    

8

Количество документов в информационной базе в разрезе видов документов

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

Отчет выводит на экран количество документов в информационной базе. Это позволяет косвенно оценить объем данных в информационной базе. Данная информация может быть полезна, например, если предполагается свернуть информационную базу на определенную дату. От количества документов очень сильно зависит время свертки базы.

1 стартмани

16.08.2023    679    14    pwn    1    

3

Статистика по документам пользователя с версионированием по дате

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

Вывод документов, созданных или отредактированных пользователем за период, в том числе с возможностью "заглянуть" в версии документа на дату.

5 стартмани

30.06.2023    1943    10    nemec    7    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 67 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 315 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
Показать
+
Оставьте свое сообщение