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

03.08.21

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

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

Скачать файл

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

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

Подключение к 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 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    9260    Evg-Lylyk    61    

44

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

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

13.03.2024    5097    spyke    28    

49

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

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

2 стартмани

15.02.2024    12422    241    ZAOSTG    80    

115

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

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

09.01.2024    14018    doom2good    49    

71

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

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

20.11.2023    13532    ivanov660    6    

81

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

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

15.11.2023    7159    a.doroshkevich    22    

74

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

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

11.10.2023    19322    skovpin_sa    15    

105
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1474 17.01.13 00:59 Сейчас в теме
Как ни посмотрю - постоянно кто-то делает анализ размеров баз) В чем преимущества твоей разработки перед существующими, например моей? http://infostart.ru/public/78049/
6. AnderWonder 27 17.01.13 11:00 Сейчас в теме
(4) Обработка делалась под себя, для удобства анализа. По сравнению с существующими отличия такие:
- обработка работает в управляемом приложении - существующих для управлемых форм не нашёл;
- обработка выводит данные, пусть и косвенные, в детализации вплоть до полей и реквизитов - такого тоже не видел;
- данные удобно (как по мне) сгруппированы в виде дерева и не содержат ничего лишнего, что облегчает анализ.
adhocprog; +1 Ответить
7. charushkin 109 18.01.13 12:30 Сейчас в теме
(4) Istur, в вашей обработке есть ошибки. Прочитайте хотя бы мои комментарии (45 и 46), которым скоро уже год (!)
8. Istur 1474 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 138 11.03.16 00:19 Сейчас в теме
Очень долго работает. У меня анализировал базу несколько часов.
13. Xershi 1555 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 489 14.12.20 14:59 Сейчас в теме
20. capitan 2507 02.08.21 16:46 Сейчас в теме
Не работает. Старая версия для толстого клиента работает, а новая нет.
Видимо надо в попытка исключение обернуть запрос к скулю
21. capitan 2507 02.08.21 21:42 Сейчас в теме
Заслуженный плюс автору. Все поправил в кратчайший срок. Красавчик
23. cetera 26.12.22 16:29 Сейчас в теме
нужна сортировка по размеру, очень сложно анализировать что больше всего занимает места.
Оставьте свое сообщение