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

15.05.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Отчет Размеры таблиц SQL:
.erf 9,81Kb
248
248 Скачать (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 Конфигурации 1cv8 Бесплатно (free)

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

13.11.2024    326    34    evgeni-red    2    

4

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

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

1 стартмани

11.09.2024    1086    14    m_kislyak    3    

9

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

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

1 стартмани

10.09.2024    3204    40    pahno    8    

7

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

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

6 стартмани

12.08.2024    743    0    aximo    2    

3

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

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

1 стартмани

16.05.2024    1625    41    yuraos    3    

10

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

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

1 стартмани

29.12.2023    2150    13    RustIG    5    

9

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

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

1 стартмани

26.10.2023    1323    18    dimanich70    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 71 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 327 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 805 07.05.24 12:58 Сейчас в теме
(12) Наверное нужно умножать, а не делить размер?
Оставьте свое сообщение