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

03.08.21

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

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

Скачать файлы

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

Подключение к 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 размеры БД администрирование

См. также

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

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

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

1 стартмани

15.02.2024    7630    158    ZAOSTG    67    

96

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

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

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

09.01.2024    5973    doom2good    48    

63

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

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

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

20.11.2023    8859    ivanov660    6    

76

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

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

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

15.11.2023    5098    a.doroshkevich    20    

72

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

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

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

11.10.2023    16170    skovpin_sa    14    

98

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

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

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

05.08.2023    5051    1CUnlimited    5    

51

MS SQL Server: изучаем планы запросов

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

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    15993    Филин    37    

113
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 1474 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 483 14.12.20 14:59 Сейчас в теме
20. capitan 2466 02.08.21 16:46 Сейчас в теме
Не работает. Старая версия для толстого клиента работает, а новая нет.
Видимо надо в попытка исключение обернуть запрос к скулю
21. capitan 2466 02.08.21 21:42 Сейчас в теме
Заслуженный плюс автору. Все поправил в кратчайший срок. Красавчик
23. cetera 26.12.22 16:29 Сейчас в теме
нужна сортировка по размеру, очень сложно анализировать что больше всего занимает места.
Оставьте свое сообщение