Просмотр структуры БД, парсинг запросов SQL

26.02.16

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

Получение некоторых данных о БД и сеансе, просмотр внутренней структуры таблиц БД 1С в SQL, "перевод" запросов SQL в терминологию 1С. Чуть больше, чем "ПолучитьСтруктуруХраненияБазыДанных"; чуть удобнее, чем аналоги; чуть другая, чем КИП.

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

Наименование Файл Версия Размер
СтруктураБД
.epf 22,39Kb
291
.epf 22,39Kb 291 Скачать

Обработка делалась "для себя" как инструмент, необходимый любому разработчику и внедренцу больших "тяжёлых" конфигураций и БД. Так, при написании конфы на 1000+ пользователей приходится уже думать об анализе узких мест по всей строгости теории тов. Филиппова, Богачёва и иже с ними. Не буду пересказывать приёмы работы, на то есть хорошие методические статьи (вроде //infostart.ru/public/291874/). Речь о практике и особенностях предложенного инструмента.

Разумеется, есть Корпоративный инструментальный пакет, где ЦУП, и нагрузочное тестирование, и прочие плюшки, но его надо разворачивать и подключать, да и денежек он стоит. Если вдруг надо быстро "поймать" затруднение там, где КИПа нет и может вообще не быть, нужно что-то проще и мобильнее.

Конечно, есть внешние обработки, и таковых на ИС много, что пользуются системной функцией "ПолучитьСтруктуруХраненияБазыДанных" и всё красиво показывают. Но - эта функция не показывает всё "по правде". Что с включённой нотацией запросов, что без. Она не покажет SimpleKey регистра сведений, DataSeparationHash (общий разделитель учёта), некоторые другие служебные поля, которые очень даже могут играть роль. Кроме того, большинство обработок показывает все таблицы в одну кучу (не путать с понятием sql, хе-хе), и найти в списке таблиц некую Reference425 бывает трудновато, а если интересует конкретное поле, некое Fld666, так и вовсе сплошь неудобно. Хотя, не спорю, есть красивые решения.

Не удалось найти решение, которое бы показывало свойства индексов. Если плохо искал, киньте в меня тапочком.

Что сделал я? Слегка расширенный аналог. Он базируется как на получении структуры средствами 1С, так и на прямых запросах к представлениям системных данных, т.е., например, к sys.tables. Прикрутил, тоже запросом, получение некоторых общих сведений (от версии SQL до SPID, который лень лазить смотреть, или модели архивации БД). А потом сбылась заветная мечта: для текстов запросов, взятых, например, из профайлера, я сделал простенький интерпретатор, который парсит их и переводит большинство термов и названий в понятийную модель 1С и конкретные имена объектов конфигурации. И, ура, наконец-то можно видеть, где будет поиск по кластерному индексу, где по некластерному, а какие поля запроса ваще не индексированы. И щелчком по гиперссылке таблицы можно посмотреть её структуру. Парсинг, конечно, примитивный, ещё есть куда докручивать, но уже приятно. КИП, насколько знаю, именно такие вещи не переводит, ему XML Showplan подавать надо, хотя могу ошибаться.

Вдобавок, сделал именно поиск. Поиск по имени таблицы, по имени поля, по их сочетанию. В том числе нечёткий. После этого понять, что _Fld234 это ИНН контрагента, стало минутным делом. Формат запросов: *[ИмяТаблицы].[*ИмяПоля]. Историю запросов помнит и восстанавливает.

В планах: сделать автоматическую составлялку настроек для трассировки (докопаться до её xml-устройства и скармливать профайлеру), ну и возможно более красивый и полный разбор результатов трассировки. И ещё сделать показ значений параметров, что идут на вход нативным запросам, т.к. @P1 это совсем неинформативно.

Разрабатывалось на 1С 8.3.6 и SQL 2008.

Кому пригодится - будет хорошо.

P.S. Проблему, описанную тут https://habrahabr.ru/post/220863/ не забарывал, и думаю, что можно просто по Order'у попробовать состыковать с порядком в метаданных, да и взять как есть.

Структура таблиц 1С структура таблиц SQL индексы SQL индексы БД

См. также

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

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

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

1 стартмани

15.02.2024    7347    149    ZAOSTG    66    

95

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

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

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

09.01.2024    5760    doom2good    48    

63

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

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

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

20.11.2023    8577    ivanov660    6    

75

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

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

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

15.11.2023    4998    a.doroshkevich    20    

72

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

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

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

11.10.2023    15954    skovpin_sa    14    

97

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

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

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

05.08.2023    4971    1CUnlimited    5    

51

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

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

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

20.06.2023    15486    Филин    37    

112
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cleaner_it 220 29.02.16 14:44 Сейчас в теме
Хорошая задумка и реализация)
2. Yashazz 4707 29.02.16 21:49 Сейчас в теме
Слушайте, а правда, неужели нет аналогов на ИС, которые бы показывали, например, кластерный ли индекс, уникальный ли? Или я искал хреново?
3. asved.ru 36 01.03.16 07:02 Сейчас в теме
TrustedConnection=Yes приводит к попытке windows-авторизации на SQL. Если логин USR1CV8 таким правом не обладает (а исходя из соображений безопасности - и не должен), то при попытке подключения вылезает исключение.
7. Yashazz 4707 01.03.16 19:42 Сейчас в теме
(3) asved.ru, да, есть такой момент. Собираюсь его допиливать.
(5) ага. Только мне потестить не на чем.
(6) цветовая разметка. Я смотрю, в каких индексных таблицах есть поле, и если это кластерный, то зелёный, иначе синий. Разумеется, это не полномасштабная схема плана, каковую анализирует КИП, но пока хоть так.
4. asved.ru 36 01.03.16 07:07 Сейчас в теме
P.S. Проблему, описанную тут https://habrahabr.ru/post/220863/ не забарывал

Это не проблема, а закономерная трудность, возникающая у изобретателей велосипедов на квадратных колесах вроде автора статьи с хабра.

и думаю, что можно просто по Order'у попробовать состыковать с порядком в метаданных, да и взять как есть

Да.
5. asved.ru 36 01.03.16 07:10 Сейчас в теме
PS а вот если оператор обладает правом windows-логина на SQL, то запросы в SQL приятнее будет делать с клиента.
6. artbear 1447 01.03.16 12:10 Сейчас в теме
И, ура, наконец-то можно видеть, где будет поиск по кластерному индексу, где по некластерному, а какие поля запроса ваще не индексированы.

На картинках не увидел эту фичу.
Расскажи про нее.
8. Serj1C 483 02.03.16 10:17 Сейчас в теме
Проблему с перечислениями я решил просто. Завел регистр сведений ЗначенияПеречислений (Измерения: ИмяПеречисления, Порядок, Ссылка; Ресурсы: Значение, Синоним)
Завел регламентное задание, которое это регистр заполняет/перезаполняет:

Процедура Заполнить() Экспорт
	
	Менеджер = РегистрыСведений.ЗначенияПеречислений.СоздатьНаборЗаписей();
	
	Для Каждого Эл Из Метаданные.Перечисления Цикл
		Для Каждого Зн Из Эл.ЗначенияПеречисления Цикл
			Стр = Менеджер.Добавить();
			Стр.ИмяПеречисления = Эл.Имя;
			Стр.Порядок = Эл.ЗначенияПеречисления.Индекс(Зн);
			Стр.Значение = Зн.Имя;
			Стр.Синоним = Зн.Синоним;
			Стр.Ссылка = Перечисления[Стр.ИмяПеречисления][Стр.Порядок];
		КонецЦикла;
	КонецЦикла;
	Менеджер.Записать();
	
КонецПроцедуры

Процедура Очистить() Экспорт
	
	Менеджер = РегистрыСведений.ЗначенияПеречислений.СоздатьНаборЗаписей();
	Менеджер.Записать();
	
КонецПроцедуры
Показать


И в прямых запросах могу спокойно делать соединения по ссылке и получать нормальные значения
9. slawa 26 02.03.16 12:45 Сейчас в теме
Не смог подключиться
В чем может быть проблема? Спасибо.
Задал настройки получил ошибку (скриншот № 1) Причем тут USR1CV8 ?
Под sa подключаюсь нормально (№ 2)
Далее точка останова и строка подключения


Прикрепленные файлы:
10. Alias 176 02.03.16 13:21 Сейчас в теме
(9) Да, такая же фигня. См (3) и (7). Нужно закомментировать "|Trusted_Connection=Yes;" несколькими строчками выше.
11. ulya_zz 21.11.18 10:01 Сейчас в теме
Подскажите, пожалуйста, как увидеть дебиторскую или кредиторскую задолженность в структуре таблиц 1С?
13. Yashazz 4707 03.12.18 09:44 Сейчас в теме
(11) Задолженность это конструкция смысловая, бизнесовая, к таблицам 1С отношения не имеет. Моделируется обычно регистрами накопления, отвечающими за взаиморасчёты, если речь об упр.базах (таких, как УТ), или регистром бухгалтерии по 60/62 счетам. Структура таблиц тут ничего не даст, вопрос не в эту ветку)

(12) Может, поубирать всю препроцессорную разметку, и сработает?
12. Anton18 23.11.18 17:01 Сейчас в теме
Добрый день.
На самописной конфе на 1С:Предприятие 8.2 (8.2.18.82) падает при открытии - ошибка во вложении.
На ней же на 1С:Предприятие 8.3 (8.3.12.1685) получаю другую ошибку - во вложении 83

Может я что-то не так делаю?
Может ли она проанализировать структуру метаданных и сказать где больше всего нагрузка идёт и из-за чего?

Заранее спасибо
Прикрепленные файлы:
14. Salexey 15.07.19 20:20 Сейчас в теме
15. Yashazz 4707 15.07.19 20:24 Сейчас в теме
(14) Ага. Так оно и сделано немноооожечко позже.
Оставьте свое сообщение