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

03.08.21

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

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

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

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

Подключение к 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 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    3555    spyke    28    

47

Анализируем SQL сервер глазами 1С-ника

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

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

1 стартмани

15.02.2024    8193    167    ZAOSTG    71    

101

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

09.01.2024    6489    doom2good    48    

64

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

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

20.11.2023    9318    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5321    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

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

11.10.2023    16548    skovpin_sa    14    

101

Как эффективно настроить autovacuum в Postgres для 1С

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Кто не любит убирать мусор? Думаю, практически все, а вот в Postgres это обязательный ритуал для эффективной работы. Как эффективно настроить уборку за 1С в Postgres, можно прочитать в этой статье и еще раз задуматься о бесплатности Postgres.

05.08.2023    5183    1CUnlimited    5    

51
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 1472 17.01.13 00:59 Сейчас в теме
Как ни посмотрю - постоянно кто-то делает анализ размеров баз) В чем преимущества твоей разработки перед существующими, например моей? http://infostart.ru/public/78049/
6. AnderWonder 27 17.01.13 11:00 Сейчас в теме
(4) Обработка делалась под себя, для удобства анализа. По сравнению с существующими отличия такие:
- обработка работает в управляемом приложении - существующих для управлемых форм не нашёл;
- обработка выводит данные, пусть и косвенные, в детализации вплоть до полей и реквизитов - такого тоже не видел;
- данные удобно (как по мне) сгруппированы в виде дерева и не содержат ничего лишнего, что облегчает анализ.
adhocprog; +1 Ответить
7. charushkin 104 18.01.13 12:30 Сейчас в теме
(4) Istur, в вашей обработке есть ошибки. Прочитайте хотя бы мои комментарии (45 и 46), которым скоро уже год (!)
8. Istur 1472 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 136 11.03.16 00:19 Сейчас в теме
Очень долго работает. У меня анализировал базу несколько часов.
13. Xershi 1479 13.07.17 22:19 Сейчас в теме
(12) у него не оптимально написан алгоритм. Я переписал все либо на сервере, либо на клиенте. На клиенте медленнее работает немного, но почти также быстро как на сервере: http://infostart.ru/public/648264/
14. sa1m0nn 28 09.11.17 11:15 Сейчас в теме
Валится, если в пароле sa есть одинарная кавычка. Кому актуально - исправьте в процедуре СформироватьСтрокуСоединения()
"""" + СокрЛП(ПарольПользователяБД)+ """" +
15. sanek_gk 105 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 484 14.12.20 14:59 Сейчас в теме
20. capitan 2470 02.08.21 16:46 Сейчас в теме
Не работает. Старая версия для толстого клиента работает, а новая нет.
Видимо надо в попытка исключение обернуть запрос к скулю
21. capitan 2470 02.08.21 21:42 Сейчас в теме
Заслуженный плюс автору. Все поправил в кратчайший срок. Красавчик
23. cetera 26.12.22 16:29 Сейчас в теме
нужна сортировка по размеру, очень сложно анализировать что больше всего занимает места.
Оставьте свое сообщение