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

26.02.16

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

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

Скачать файл

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

Наименование SM По подписке Купить один файл
СтруктураБД
.epf 22,39Kb
292
292
1 SM
Скачать Купить за 1 850 руб.

Обработка делалась "для себя" как инструмент, необходимый любому разработчику и внедренцу больших "тяжёлых" конфигураций и БД. Так, при написании конфы на 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 индексы БД

См. также

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

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

13.03.2024    4085    spyke    28    

47

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

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

1 стартмани

15.02.2024    9611    195    ZAOSTG    74    

105

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

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

09.01.2024    8415    doom2good    49    

67

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

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

20.11.2023    10724    ivanov660    6    

78

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

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

15.11.2023    5875    a.doroshkevich    20    

73

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

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

11.10.2023    17450    skovpin_sa    14    

102

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

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

05.08.2023    5535    1CUnlimited    5    

51
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cleaner_it 221 29.02.16 14:44 Сейчас в теме
Хорошая задумка и реализация)
2. Yashazz 4759 29.02.16 21:49 Сейчас в теме
Слушайте, а правда, неужели нет аналогов на ИС, которые бы показывали, например, кластерный ли индекс, уникальный ли? Или я искал хреново?
3. asved.ru 36 01.03.16 07:02 Сейчас в теме
TrustedConnection=Yes приводит к попытке windows-авторизации на SQL. Если логин USR1CV8 таким правом не обладает (а исходя из соображений безопасности - и не должен), то при попытке подключения вылезает исключение.
7. Yashazz 4759 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 1556 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 4759 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 4759 15.07.19 20:24 Сейчас в теме
(14) Ага. Так оно и сделано немноооожечко позже.
Оставьте свое сообщение