Размеры таблиц и полей БД MS SQL + справочник таблиц (УФ, тонкий клиент)

03.08.21

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

Отображает информацию о размерах таблиц MS SQL в разбивке по метаданным. Также есть возможность получить информацию о том сколько места занимают конкретные поля таблицы (реквизиты объектов). Т.е. например имеем справочник "Номенклатура" размером 100 МБ, из них реквизит "Наименование" занимает 10%, реквизит "Категория" - 2% и т.д. Реализована в управляемой форме, работает в тонком клиенте, может быть открыта как просто внешняя обработка так и подключена через подсистему "Дополнительные отчеты и обработки".

Файлы

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

Наименование Скачано Купить файл
Размеры таблиц и полей БД MS SQL + справочник таблиц (управляемая форма):
.epf 15,23Kb ver:2.0
172 1 850 руб. Купить

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

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

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

Подключение к MS SQL происходит с помощью ADODB со стороны сервера 1С. Информация о размерах таблицы получается с помощью вызова встроенной хранимой процедуры sp_spaceused.

Для расчета места занимаемого полями таблицы (реквизитами объектов) в обработке производится расчет относительного размера каждого поля в общем размере таблицы на основании анализа определенного количества записей  - оно задается в параметре "Количество записей для анализа полей". Т.е. например, "Количество записей для анализа полей"=1000, тогда берется 1000 записей таблицы MS SQL и для каждого поля вычисляется объем занимаемых данных с помощью функции datalength. Затем определяется доля каждого поля в общем объеме из 1000 записей таблицы. Если данные в таблице однородны, то полученное значение будет достаточно точным. Чем большее количество записей будет проанализировано, тем сильнее будет сглажена неоднородность данных в таблице, однако анализ может занять много времени. Есть возможность выбора отдельных метаданных для анализа. Работа обработки может быть прервана нажатием Ctrl+Break. Если "Количество записей для анализа полей" установлено 0, то анализ по полям вообще производится не будет.

На отдельной вкладке выводится "Справочник таблиц MS SQL" - список названий таблиц MS SQL в привязке к метаданным с возможностью поиска. Может пригодится для анализа запросов в MS SQL.

Обновление от 12/12/2018: Обработка обновлена до версии 2.0. Исправлены ошибки, проведен рефакторинг, улучшен функционал. Протестирована на платформах 8.2, 8.3.

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

обработка MSSQL размеры БД администрирование

См. также

HighLoad оптимизация Программист 1С v8.3 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    6440    ivanov660    39    

60

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    8963    ivanov660    13    

60

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

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    7131    spyke    29    

52

HighLoad оптимизация Программист 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    10316    vasilev2015    22    

45

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

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

5 стартмани

15.02.2024    17244    321    ZAOSTG    100    

122

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

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    29422    doom2good    50    

74

HighLoad оптимизация Системный администратор Программист Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    19060    ivanov660    7    

84
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SergDi 16.01.13 19:35 Сейчас в теме
довольно интересно, еще и под тонкие формы, нужно заюзать
2. SergDi 16.01.13 19:36 Сейчас в теме
интресно насколько точные цифры выдает
3. SergDi 16.01.13 19:58 Сейчас в теме
{Форма.Форма.Форма(24,27)}: Тип не определен (ДеревоЗначений)
ДеревоМетаданных = Новый <<?>>ДеревоЗначений;

ДеревоЗначений (ValueTree)

Доступность:
Сервер, толстый клиент, внешнее соединение.
5. AnderWonder 27 17.01.13 10:55 Сейчас в теме
(3) Это будет в тонком клиенте, в описании указано, что работает только под толстым.
(1) Можно сделать что бы работало под тонким. Есть два пути:
- простой - если вы готовы пожертвовать отображением прогресса обработки, то достаточно перенести процедуры обработки в &НаСервере. Т.к. прогресс отображается функцией Состояние(), которая работает только на клиенте, то прогресс отображаться не будет.
- сложный, без потери отображения прогресса - необходимо сделать механизм передачи дерева значений с сервера на клиент и с клиента на сервер. Это делают с помощью структур - процесс несколько муторный. По-моему игра не стоит свеч.
(2) Данные о размере БД достаточно точные, проверено на рабочей базе, где практически сошлось с фактическим размером файла на диске, за вычетом объема самой конфигурации, которая тоже хранится в БД. Также механизм определения размера основан на принципе из прошлой обработки, на которую указана ссылка в публикации, достоверность работы которой, по-видимому, подтверждена практикой.
Определения данных по полям зависит от количества анализируемых записей, заданных параметром, но в принципе тоже должно отображаться корректно. Опять таки, проверено на своей базе. Например, в регистре наибольший размер показало для одного текстового поля, что после проверки подтвердилось, хотя были и другие поля такого же типа, но они, как оказалось, не заполнялись.
4. Istur 1475 17.01.13 00:59 Сейчас в теме
Как ни посмотрю - постоянно кто-то делает анализ размеров баз) В чем преимущества твоей разработки перед существующими, например моей? http://infostart.ru/public/78049/
6. AnderWonder 27 17.01.13 11:00 Сейчас в теме
(4) Обработка делалась под себя, для удобства анализа. По сравнению с существующими отличия такие:
- обработка работает в управляемом приложении - существующих для управлемых форм не нашёл;
- обработка выводит данные, пусть и косвенные, в детализации вплоть до полей и реквизитов - такого тоже не видел;
- данные удобно (как по мне) сгруппированы в виде дерева и не содержат ничего лишнего, что облегчает анализ.
adhocprog; +1 Ответить
7. charushkin 110 18.01.13 12:30 Сейчас в теме
(4) Istur, в вашей обработке есть ошибки. Прочитайте хотя бы мои комментарии (45 и 46), которым скоро уже год (!)
8. Istur 1475 18.01.13 12:47 Сейчас в теме
(7) Я года полтора не сидел на инфостарте вообще, не до него было. Щас читаю да, смотрю, что народ понаписал. Твои 2 комментария почитал.. посмотрю и или оспорю или исправлю. Проблема в том, что сейчас я не имею доступа к SQL-серверу, смогу сделать только в темную если только( Хотя ты в принципе и так нашел и где баг и как его поправить)
9. 1977 2 17.02.13 16:34 Сейчас в теме
В УТ11 не пошла, база файловая
{Форма.Форма.Форма(24,27)}: Тип не определен (ДеревоЗначений)
ДеревоМетаданных = Новый <<?>>ДеревоЗначений;
платформа 8,2,17
10. AnderWonder 27 17.02.13 22:49 Сейчас в теме
(9) Об этой ошибке уже отвечал в (5).
И вообще-то в описании написано:
...о размерах объектов по типам метаданных в БД MS SQL

эта обработка не для файловой базы.
11. bocharovki 7 28.11.13 07:12 Сейчас в теме
Полезная штука. Единственное я бы добавил возможность по галке включать проверку подлинности Windows (добаление к строке соединения Integrated Security=SSPI)
adhocprog; +1 Ответить
12. solbol 135 11.03.16 00:19 Сейчас в теме
Очень долго работает. У меня анализировал базу несколько часов.
13. Xershi 1541 13.07.17 22:19 Сейчас в теме
(12) у него не оптимально написан алгоритм. Я переписал все либо на сервере, либо на клиенте. На клиенте медленнее работает немного, но почти также быстро как на сервере: http://infostart.ru/public/648264/
14. sa1m0nn 28 09.11.17 11:15 Сейчас в теме
Валится, если в пароле sa есть одинарная кавычка. Кому актуально - исправьте в процедуре СформироватьСтрокуСоединения()
"""" + СокрЛП(ПарольПользователяБД)+ """" +
15. sanek_gk 104 13.01.18 13:06 Сейчас в теме
это нормально что обработка собирает данные дольше 2 часов ? wtf.
16. AnderWonder 27 19.01.18 14:17 Сейчас в теме
(15) если вы проводите анализ по реквизитам объектов то нормально. "... анализ происходит путем вычисления размера данных хранимых в поле с помощью функции T-SQL datalength. Т.к. при большом количестве записей в таблице, выполнение этой функции может занимать много времени, то предусмотрен параметр "Количество записей для анализа полей". Этот параметр ограничивает число записей, по которым происходит вычисление datalength количество первых записей указанных в нём. При условии однородности данных заполняющих колонку таблицы это дает достаточно приближенный результат. Если указать значение этого параметра 0, то анализ по полям производится не будет."
17. gts1 25.03.20 10:43 Сейчас в теме
При попытке получить размер таблиц (которые создает расширение в регистре сведений) выходит ошибка:
Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
{ВнешняяОбработка.РазмерыБазыДанныхMSSQL.Форма.Форма.Форма(493)}: ПодключениеSQL.Close();
{ВнешняяОбработка.РазмерыБазыДанныхMSSQL.Форма.Форма.Форма(82)}: УдалитьПодключениеSQL();
по причине:
Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.

В сообщениях пишет:
{ВнешняяОбработка.РазмерыБазыДанныхMSSQL.Форма.Форма.Форма(466)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Объект "_InfoRg40359" не существует в базе данных "torg", или недопустимо его использование в данной операции.
Ошибка запроса MS SQL при обращении к таблице:_InfoRg40359,

Не подскажете как лечить?
УТ 11.4
18. AnderWonder 27 26.03.20 11:55 Сейчас в теме
(17) Да, возникает ошибка т.к. похоже функция ПолучитьСтруктуруХраненияБазыДанных () выдает некорректную информацию для объектов созданных в расширении в последних версиях платформы. Чуть позже исправлю обработку, сейчас можете попробовать закомментировать строки 383-385 таким образом:
Иначе
	//ПодключениеКSQL.Close();
	//ПодключениеКSQL = Неопределено;
	//ВызватьИсключение "Ошибка запроса к MS SQL Server";
КонецЕсли;

Также нужно изменить строку 341 таким образом:
РазмерыТаблицыSQL = Новый Структура("Строк, Зарезервировано, РазмерДанных, РазмерИндексов, Свободно", 0, 0, 0, 0, 0);
22. gts1 14.02.22 19:34 Сейчас в теме
(18) А не получилось решить как-то проблему с получением размеров таблиц для расширений?
Обработка работает хорошо, но вот с размером таблиц из расширений не считает их.
19. ManyakRus 491 14.12.20 14:59 Сейчас в теме
20. capitan 2535 02.08.21 16:46 Сейчас в теме
Не работает. Старая версия для толстого клиента работает, а новая нет.
Видимо надо в попытка исключение обернуть запрос к скулю
21. capitan 2535 02.08.21 21:42 Сейчас в теме
Заслуженный плюс автору. Все поправил в кратчайший срок. Красавчик
23. cetera 26.12.22 16:29 Сейчас в теме
нужна сортировка по размеру, очень сложно анализировать что больше всего занимает места.
Для отправки сообщения требуется регистрация/авторизация