При работе любой системы очень часто возникают проблемы с производительностью и недовольство пользователей "тормозами".
Учитывая, что 1С - это многозвенная система - Клиент-сервер1С-СерверSQL, необходимо проводить комплексный анализ всей цепочки.
Один из элементов цепочки - это SQL сервер, с которым часто есть различные проблемы, в том числе организационные.
Когда администрирование SQL "вешают" не на администраторов баз данных, а на админов "широкого профиля" или на 1С-овцев, которые смотрят на SQL и не могут понять, что там не так.
Конечно, можно изучить море информации, пройти курсы DBA, узнать все про SQL.
Но на это надо время, силы и появляется шанс потери сотрудника, который с таким багажом может легко уйти на более высокооплачиваемую вакансию...
В помощь разборки причин неоптимальной или медленной работы 1С и создана данная обработка.
Она позволяет легко и просто "посмотреть" на SQL в "человеческом" языке, в том числе с точки зрения рекомендации фирмы 1С, производителя SQL, опыта независимых исследователей причин медленной работы SQL, в терминах метаданных 1С и получить готовые решения в виде команд и скриптов для улучшения производительности.
В данном решении приложено 2 варианта для использования
1 - Автономная обработка. Рекомендуется запускать на базе с конфигурацией, равной текущей. Тогда имена объектов будут подставляться в именах 1С. Остальной функционал будет работать.
2 - Как расширение к 1smonitor.ru. Можно на триальную версию ставить. Позволяет более "привычно" для 1С получать запросы + дополнительно советы, что исправлять. И метаданные берутся из монитора - поэтому нет ограничений, что текущая конфигурация равна исследуемой.
Источник данных
Все данные по SQL получаются исключительно запросами SQL. В том числе события, рекомендации и т.п.
Рекомендации по настройке получены как из официальных источников 1С, MS SQL, так и из опыта эксплуатации "1С-ников".
Возможности (буду без скринов - чтобы не спамить. Все скрины сверху)
- Оперативная информация по SQL.
- Загрузка сервера SQL по процессорам
- Текущие запросы. с текстом, ожиданиями, и прочими важными и детальными данными
- Очень детальная информация по запросу -что там идет внутри. Видно какие подкоманды, их прогресс и тп
- Показывает информацию по SQL серверу
- Общие данные -что может быть кратко и важно
- подробно версию
- сколько работает
- режим производительности
- оперативной памяти
- Параметры
- имена
- текущие значения
- рекомендованные
- комментарий, почему так рекомендовано
- и если есть вариант установить командой - команда
- Трассировки
- имя флага
- текущий режим - установлен или нет
- команда установки флага
- рекомендация
- Описание- на каком основании дана рекомендация
- Детали - тут все параметры SQL. "черновая" информация, но может, что-то интересное перейдет на закладки информация о сервере
- Доступное место - сколько есть места под базы, логи
- Общие данные -что может быть кратко и важно
- Информация о базе
- Информация о бекапах - когда были, что бекапилось и сколько времени шло
- Большие таблицы. Таблицы больше Гб. С именами 1С. Помогает понять, что занимает много места, и быстро удалять неважные данные, например, в базах разработчиков
- Рекомендации
- Рекомендация - итоговая страница. Что советует сделать и код скрипта для выполнения рекомендации
- Ожидания - накопленные ожидания, информация о них и что можно сделать, чтобы улучшить ситуацию
- Использование индексов и статистика. Рекомендации по индексам и скрипт улучшения ситуации
- Рекомендуемые индексы
- Паразитные индексы. Список, как часто использовались
- Недообновления - если есть таблицы-остатки неудачных обновлений.
- Список запросов
- На основании чего получены данные. можно посмотреть, подправить, выполнить
- Посмотреть результаты выполнения
Везде, где можно, сделано:
1 - замена имен на метаданные 1С
2 - замена скрипта на понятные 1с-нику
3 - даны по возможности рекомендации -куда смотреть для ускорения запроса
В данной обработке недоступна генерация скриптов, прямо или косвенно нарушающих лицензионное соглашение 1С или правила публикации на Инфостарте. Только выведен анализ наиболее вероятных причин медленной работы 1С.
Какие планы
1 - добавить поддержку PostgreSQL Добавлено! Набор запросов разный, но ищу общие точки чтобы было максимально удобно анализировать
2 - явно назрела проблема парсить план запроса + советы по нему (например взять параметры из текущего запроса, обновить статистику, добавить индекс во временную таблицу и т.п.)
3 - расширить функционал и внешний вид под пожелания пользователей
Если есть предложения - пишите, реализую. Это будет более эффективно, чем Вы будете тратить свое время на создание своей ветки данного решения.
Предоставленная информация и скрипты распространяются "как есть". Без гарантий отсутствия ошибок и ухудшения работы системы при их использовании в вашем случае. Применяйте все на свой здравый смысл, риск и страх.
Для эффективного применения внимательно читайте приведенные рекомендации, ссылки на первоисточники и логические выводы и принимайте решения.
Тестировалась на разных платформах 1С:Предприятие 8.3 (8.3.23.2040).
Но явно не использовал какие-то специфические функции платформы, поэтому будет работать и на старых релизах и на новых.
Важно
На текущий момент доделана конвертация SQL в запрос 1с, большинство из которых даже могут открываться в конструкторе запросов, что позволяет как привычно смотреть в конструкторе, та и при закрытии "отформатировать" запрос
Но
1. Не все идет гладко, не все запросы так удается конвертировать, но уже 90%+ получается
2. Понятно что такой запрос не факт что выполнится -так как там параметры вставляются строкой=гуид - как только 1с сделает функцию в запросе подставить гуид и из него найдется ссылка - то переделаю и заработает ;). Пока в планах - искать кодом по гуидам ссылки и их подставлять. но это далекие планы. Но как ни может показаться странным -запрос даже удается выполнить после небольших очевидных (человеку) точечных ручных корректировок по месту!
3- в генерируемых запросах много дублей . при генерации ссылки 1с из нее делает 3 объекта (тип объекта, тип ссылки и ссылка -и в коде выглядит как 3 раза одно и тоже) -с этим борюсь чтобы не захламлял запрос Дубли убрал
Чтобы пользоваться функционалом нужны права на SQL
Для MS SQL у выбранного логина должны быть разрешения
ALTER ANY EVENT SESSION,
VIEW SERVER STATE и
VIEW ANY DEFINITION
на сервере СУБД,
а также доступ на чтение к исследуемой базе данных.
Для PostgreSQL чтобы включить сборы статистики на вашем сервере, измените следующую строку в postgresql.conf и перезапустите PostgreSQL:
shared_preload_libraries = ‘pg_stat_statements’
track_activity_query_size = 1048576
После загрузки этого модуля на сервер PostgreSQL автоматически начнет собирать информацию и буфера хватит для анализа запроса 1С.
Хорошо то, что накладные расходы модуля действительно очень низкие (накладные расходы в основном просто «шум»).
Затем выполните следующую команду для создания представления, необходимого для доступа к данным:
CREATE EXTENSION pg_stat_statements;
Версия 27.02.2024
Пофиксены мелкие баги
в запросах с индексами в комментарии выведены объект и поля -чтобы было понятней что и зачем
Версия 28.02.2024
В выбор версий скуля -добавлен список выбора и разъяснение какая версия цифрами равна текстом
Небольшие фиксы багов конвертации в запрос
Версия 01.03.2024
Хотфикс под новую версию 1Sмонитора
Версия 03.03.2024
Теперь анализирует фрагментацию и в автоскрипте исправления индекса учитывает это
Перестроить
Оптимизировать
Обновить статистику
Важно! На первой странице настроек -отбор по интенсивности. стоит миллион операций. Если ваша база менее активная -выставляйте свой параметр
11.03.2024
Расширение под новую версию 1smonitor -там изменился код и сломалась интеграция
12.03.2024
Причесана закладка преобразования запроса в 1с
интеграция с 1smonitor исправлено обновление закладки текущего запроса
15.03.2024
Исправлены опечатки
рекомендация по обработке обновления статистике уточнена -не дает рекомендации чтобы обновить статистику -если статистка бессмысленна -один шаг)
18.03.2024
конвертор запросов
- если это табчасть объкта -теперь "короткое" имя правильнее- выше шанс что откроется запросом
- если параметр не найден -заменяет @p на &p чтобы открыть в конструкторе запросов
22.03.2024
ускорена раз в 20 скорость заполнения закладки Рекомендации. и на остальные где получает метаданые полей
на рекомендации изменен приоритет - первично статистика, потом уже дефрагментация...
24.03.2024
Ускорение, багфиксы
25.03.2024
Добавлен флаг в рекомендации чтобы отбирать только что нао исправить
в рекомендации убран совет по обновлени "бестолкового" индекса
28.03.2024
Исправлена ошибка работы автономной обработки
добавлена новая фишка - в реальном времени реальные нагрузки теперь более детальные - видно где тупит. Следующий этап - на базе этой информации получать более качественнее рекомендации
07.04.2024
Адаптация расширения под новый монитор (изменились элементы -вызывает ошибку)
Сделаны описания как включить сбор информации для MS и PG
17.04.2024
Разборка с ошибкой когда не понял какая версия скуля
Причесаны описания как включить сбор информации для MS и PG - теперь можно выделать команды и навел в них "красоту"
27.04.2024
Теперь умеет парсить xml плана запроса -и получать оттуда параметры. В итоге текущие запросы и долгие и тп -с нормальными значениями параметров!
Причесан конвертатор в запрос 1с. стал еще более корректно транслировать
Добавлен новый анализатор, указывающий причину где может тормозить запрос
28.04.2024
Улучшен конвертатор запроса "автономный"-теперь если в запросе несколько одинаковых таблиц - дает разные имена
Добавлена закладка в информации о сервере - сколько свободного места в базе и сколько можно "шринкануть"
08.05.2024
Небольшие косметические улучшения
12.05.2024
Небольшие косметические улучшения - информация о сервере более причесана - в части информации о дисках
18.05.2024
улучшен анализатор - больше рекомендаций
причесаны интерфейсы закладок - стало более логично и красиво
скрипты обновления статистики содержат теперь справочно информацию, когда было последнее обновление
анализатор запроса стал более удобен - одинаковые события группируются и теперь вместо много одинаковых строк видно, сколько было итого "проблем"
Расширение - под новую версию монитора - теперь в "нативной" закладке и более удобно - не надо закрывать, чтобы вернуться в типовые закладки, плюс добавлены расширенные анализаторы запроса во все типовые страницы, где запрос.
02.06.2024
Хотфикс
09.06.2024
Хотфиксы
21.06.2024
Доработана закладка ожидания - теперь есть ссылки на подробный источник информации
25.06.2024
Хотфиксы - опечатки, более причесанная информация, подготовка к более глубокому по погружению - на конференции Гильдия 1с буду выступать -надеюсь появится много предложений и идей
29.06.2024
Важное обновление
1- в конвертере запроса из SQL в 1с "автономном" улучшен режим конвертации. Теперь совсем не тупит когда в запросе несколько раз повторятся одни и те-же таблицы. В "основной" режим когда вызывается из 1smonitor -переделка в процессе. кому надо срочно - копируйте оригинальный текст sql в конвертер и там быстро получите результат для анализа в конструкторе запросов
2 - добавлены новые анализаторы в советнике -где тупит запрос
3 - в конвертере так-же добавлена закладка с советником -забыл вывести. теперь норм. можно автономно все видеть по любому запросу -и норм текст, и советы
01.07.2024
В текущие запросы расширено поле советника - не всегда все советы помещались
новые проверки и рекомендации советника
уточнены набор прав - чтение целевой базы необходимо только public - сами данные читать нет необходимости. Это для безопасности
04.07.2024
Новые проверки и рекомендации советника
Улучшен конвертер SQL в запрос 1С
06.07.2024
Новые описания расшифровок ожиданий
Улучшен конвертер SQL в запрос 1С
Сильно увеличена скорость работы
08.07.2024
Добавлено в советник - сообщение "отсутствует индекс" если найдена в плане запроса рекомендация
Новые описания расшифровок ожиданий
Улучшен конвертер SQL в запрос 1С
13.07.2024
Добавлено в советник - сообщение "отсутствует индекс" если найдена в плане запроса рекомендация
Новые описания расшифровок ожиданий
Улучшен конвертер SQL в запрос 1С
14.07.2024
Улучшен конвертер SQL в запрос 1С
теперь условия "избыточные" сворачиваются
Было
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Исполнение КАК T8_БП_Исполнение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x08")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x0000000E")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T8_БП_Исполнение.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Приглашение КАК T9_БП_Приглашение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x08")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x00000F1F")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T9_БП_Приглашение.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.ОбработкаИсходящегоДокумента КАК T10_БП_ОбработкаИсходящегоДокумента
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x08")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x00000014")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T10_БП_ОбработкаИсходящегоДокумента.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.ОбработкаВнутреннегоДокумента КАК T11_БП_ОбработкаВнутреннегоДокумента
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x08")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x00000010")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T11_БП_ОбработкаВнутреннегоДокумента.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Поручение КАК T12_БП_Поручение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x08")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = "0x00000018")
И (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T12_БП_Поручение.Ссылка)
стало
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Исполнение КАК T8_БП_Исполнение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T8_БП_Исполнение.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Приглашение КАК T9_БП_Приглашение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T9_БП_Приглашение.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.ОбработкаИсходящегоДокумента КАК T10_БП_ОбработкаИсходящегоДокумента
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T10_БП_ОбработкаИсходящегоДокумента.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.ОбработкаВнутреннегоДокумента КАК T11_БП_ОбработкаВнутреннегоДокумента
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T11_БП_ОбработкаВнутреннегоДокумента.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.Поручение КАК T12_БП_Поручение
ПО (T1_З_ЗадачаИсполнителя.БизнесПроцесс = T12_БП_Поручение.Ссылка)
PS
"расширенный конвертер+" срабатывает только в режиме обработка
перенос в расширение -в процессе
"допсоветник" работает и там и там одинаково
22.07.20204
небольшая оптимизация для постгре
23.07.20204
Оптимизация для PostgreSQL
-конвертация даты и времени в формат запроса
-конвертация строковых переменных
-список доступных запросов теперь более четко разделены для MS SQL и PostgreSQL
-добавлены запросы по PostgreSQL
- исправлено поиск метаданных PostgreSQL для указания таблиц и индексов в списках больших, рекомендуемых, лишних и тп
24.07.2024
Небольшие хотфиксы
в конвертере запросов убраны неважные для анализа запроса закомментированные исходные тексты
начата новая фаза- очередной анализ плана запросов MS SQL - вытащил варнинги - советник теперь пишет что например неактуальная статистика при построении запроса
25.07.2024
Обработка варнигнов из плана запроса
очень много интересного к размышлению...
выводится в закладке "советник"
что "поймал" -то перевел на осмысленный русский
что не "переведено" -выводит как есть.
PS -если есть ссылка на функцию которая "свернут" хмл в дерево красивое в 1с - дайте ссылку. что нашел - выводит только ветки, а надо с реквизитами...