При работе любой системы очень часто возникают проблемы с производительностью и недовольство пользователей "тормозами".
Учитывая, что 1С - это многозвенная система - Клиент-сервер1С-СерверSQL, необходимо проводить комплексный анализ всей цепочки.
Один из элементов цепочки - это SQL сервер, с которым часто есть различные проблемы, в том числе организационные.
Когда администрирование SQL "вешают" не на администраторов баз данных, а на админов "широкого профиля" или на 1С-овцев, которые смотрят на SQL и не могут понять, что там не так.
Конечно, можно изучить море информации, пройти курсы DBA, узнать все про SQL.
Но на это надо время, силы и появляется шанс потери сотрудника, который с таким багажом может легко уйти на более высокооплачиваемую вакансию...
В помощь разборки причин неоптимальной или медленной работы SQL (для 1С) и создана данная обработка.
Она позволяет легко и просто "посмотреть" на SQL в "человеческом" языке, в том числе с точки зрения рекомендации фирмы 1С, производителя SQL, опыта независимых исследователей причин медленной работы SQL, в терминах метаданных 1С и получить готовые решения в виде команд и скриптов для улучшения производительности.
В данном решении приложено 2 варианта для использования
1 - Автономная обработка. Рекомендуется запускать на базе с конфигурацией, равной текущей.
- Тогда имена объектов будут подставляться в именах 1С, большинство запросов смогу даже открыться в конструкторе для анализа и форматирования запроса.
- А часть даже выполнится (после небольшой обработкой напильником).
В планах (далеких) замена в параметрах гуиды на реальные данные из базыСделано! Теперь можно видеть не гуиды -а реальные данные. Особенно удобно когда значение перечислений в условиях.
2 - Как расширение к 1smonitor.ru. Можно на бесплатную версию ставить. Позволяет из "одного окна" мониторить все сервера. Настройки настройки подключения и метаданные берутся из монитора. Как расширение функционала в запросах новые закладки
- Возможно подключение через агента 1с-монитор. В итоге работает под Windows/Linux без установки доп драйверов и танцев с бубнами!
- Текст запроса на языке 1с -максимально приближенный к анализу. Теперь корректно работает даже когда много связей с одинаковыми таблицами
- Советник -что вероятно послужило причиной тормозов и что делать. В том числе теперь анализируется план запроса (если он есть)
- Добавлен функционал просмотра текущих сеансов (RAS&COM подключение).
- В удобном виде
- -важные сверху,
- виновник блокировки в виде имени и клиента в не номера соединения
- можно тут-же "убить виновника тормозов"
- можно выгрузить в таблицу
- построить отчет
- В удобном виде
Источник данных
Все данные по SQL получаются исключительно запросами SQL. В том числе события, рекомендации и т.п.
Рекомендации по настройке получены как из официальных источников 1С, MS SQL, так и из опыта эксплуатации "1С-ников".
Возможности (буду без скринов - чтобы не спамить. Все скрины сверху - смотрите все чтобы понять функционал -данных много)
- Оперативная информация по SQL.
- Загрузка сервера SQL по процессорам (MS SQL)
- Текущие запросы. с текстом, ожиданиями, блокировками, советником что не так с запросом и прочими важными и детальными данными
- Если вы счастливый пользователь 1СМонитора и настроили RAS|Com подключение -то тут же увидите необходимую информацию о пользователе 1с, типе подключения и тп
- Очень детальная информация по запросу(MS SQL) -что там идет внутри. Видно какие подкоманды, их прогресс и тп
- Показывает информацию по SQL серверу
- Общие данные -что может быть кратко и важно
- подробно версию
- сколько работает
- режим производительности
- оперативной памяти, процессоров
- Дополнительные важные параметры
- Параметры
- имена
- текущие значения
- рекомендованные
- комментарий, почему так рекомендовано
- и если есть вариант установить командой - команда
- Трассировки(MS SQL)
- имя флага
- текущий режим - установлен или нет
- команда установки флага
- рекомендация
- Описание- на каком основании дана рекомендация
- Детали - тут все параметры SQL. "черновая" информация, но может, что-то интересное перейдет на закладки информация о сервере
- Доступное место - сколько есть места под базы, логи, можно ли шринкануть базу
- Общие данные -что может быть кратко и важно
- Информация о базе
- Информация о бекапах - когда были, что бекапилось и сколько времени шло (MS SQL)
- Большие таблицы. Таблицы больше Гб. С именами 1С. Помогает понять, что занимает много места, и быстро удалять неважные данные, например, в базах разработчиков
- Данные о регистрации изменений - наверняка есть ненужные регистрации в неиспользуемых планах обмена.
- Недообновления - если есть таблицы-остатки неудачных обновлений. с именfми *NG
- Рекомендации
- Рекомендация - итоговая страница. Что советует сделать и код скрипта для выполнения рекомендации
- Ожидания(MS SQL) - накопленные ожидания, информация о них и что можно сделать, чтобы улучшить ситуацию
- Использование индексов и статистика. Рекомендации по индексам и скрипт улучшения ситуации
- Рекомендуемые индексы
- Паразитные индексы. Список, как часто использовались
- Список запросов
- На основании чего получены данные. можно посмотреть, подправить, выполнить
- Посмотреть результаты выполнения
- Список скриптов
- Полезные скрипты -типа сжать tempdb, обновлять только нужную статистику и тп
- конвертер любого запроса SQL в 1с (актуально для режима внешняя обработка)
Везде, где можно, сделано:
1 - замена имен на метаданные 1С
2 - замена скрипта на понятные 1с-нику.
3 - даны по возможности рекомендации -куда смотреть для ускорения запроса ( в том числе если есть план запроса -показывает из него важную информацию)
Index Seek уже 8 665,85% РегистрСведений.ЗначенияГруппДоступаПоУмолчанию(_InfoRg22674)
Row Count Spool уже 9 387,8%
Index Seek уже 12 690,48% РегистрСведений.ЗначенияГруппДоступа(_InfoRg22667)
Index Seek уже 19 500% РегистрСведений.ЗначенияГруппДоступаПоУмолчанию(_InfoRg22674)
Clustered Index Seek уже 6 500% РегистрСведений.ЗначенияГруппДоступа(_InfoRg22667)
Clustered Index Seek уже 19 500% РегистрСведений.ГруппыЗначенийДоступа(_InfoRg21530)
Использование в сравнении условных операторов приводит к исключению применения индекса для быстрого поиска по этому полю
Использовано 17 'ГДЕ... ВЫБОР КОГДА...'
Использование в сравнении подзапроса потенциально приводит к замедлению
Использовано 22 'ГДЕ... ВЫБРАТЬ...'
Использование в сравнении условных операторов или функций приводит к исключению применения индекса по этому полю
Использовано 2 'ПО... ВЫБОР КОГДА...'
Использовано вложенных подзапросов может приводить к неоптимальному плану запроса
Использовано 3 вложенный запрос 'СОЕДИНЕНИЕ... ВЫБРАТЬ...'
4- генерируются команды исправления данных на SQL
В данной обработке недоступна генерация скриптов, прямо или косвенно нарушающих лицензионное соглашение 1С или правила публикации на Инфостарте. Только выведен анализ наиболее вероятных причин медленной работы 1С.
Какие планы
1 - более глубокое погружение в PG
Если есть предложения - пишите, реализую. Это будет более эффективно, чем Вы будете тратить свое время на создание своей ветки данного решения.
Предоставленная информация и скрипты распространяются "как есть". Без гарантий отсутствия ошибок и ухудшения работы системы при их использовании в вашем случае. Применяйте все на свой здравый смысл, риск и страх. Протестировано на разных платформах и конфигурациях 1с
Для эффективного применения внимательно читайте приведенные рекомендации, ссылки на первоисточники и логические выводы и принимайте решения.
Тестировалась на разных платформах 1С:Предприятие 8.3 (начиная с 8.3.23.2040).
Но явно не использовал какие-то специфические функции платформы, поэтому будет работать и на старых релизах (8.3.20 и выше).
Важно
На текущий момент доделана конвертация SQL в запрос 1с, большинство из которых даже могут открываться в конструкторе запросов, что позволяет как привычно смотреть в конструкторе, та и при закрытии "отформатировать" запрос.
Но
1. Не все идет гладко, не все запросы так удается конвертировать, но уже 99%+ получается
2. "нормально" работает пока только в режиме внешней обработки, которая запускается в базе с целевой конфигурацией Исправлено насколько возможно!
2.1 ставятся разные имена алиасов таблиц -если они обращаются к одинаковым таблицам источникам - такой режим чтобы из 1СМонитора работал -СДЕЛАНО в режиме из монитора!
2.2 - открываются в конструкторе запросов. Чтобы кому удобно мог анализировать через конструктор, но и после форматирования конструктором удобно анализировать как текст. Естественно такой режим невозможен в 1СМониторе - другая конфигурация...
3. Понятно что такой запрос не факт что выполнится -так как там параметры вставляются строкой=гуид - как только 1с сделает функцию в запросе подставить гуид и из него найдется ссылка - то переделаю и заработает ;). Пока в планах - искать кодом по гуидам ссылки и их подставлять. но это далекие планы. Но как ни может показаться странным -запрос нередко удается выполнить после небольших очевидных (человеку) точечных ручных корректировок по месту!
Версия 19.11.2024
Оптимизация по "оборке" технического поля "ОбластьДанныеОсновныеДанные"
Оптимизация под PostgreSQL - анализ почему индекс неэффективен теперь и для метаданных PostgreSQL
Версия 10.11.2024
Рекомендации
Улучшен алгоритм замены полей в индексах -теперь меняет намного умнее
Версия 05.11.2024
Анализатор запроса
Улучшено сворачивание дублей полей (ссылка, тип ссылки, тип) в один
Расширение
Теперь план запроса (MS SQL) если нажать через открыть - там в плане запроса будут уже русские имена
который можно вставить например в https://www.supratimas.com/ -и там будут имена объектов русские и понятные!
Версия 04.11.2024
Анализатор запроса
- в советник добавлена информация из плана - если нашлись отсутствующие индексы
- причесан конвертер -теперь в расширении работает корректно с множеством дублей таблиц
- имена таблиц стали понятнее и без глюков
расширение
в плане запросов добавлена кнопка показать ( не вызывает программу по умолчанию)
и в ней-же имена заменены на русские -чтобы проще понимать план
Версия 03.11.2024
Доработка расширения - текущие соединения более качественно отрабатывают соединения кластера если через ком соединение -в том числе удаление соединения
Анализ скуля -
лучше сворачивает дубли и новые рекомендации советника
Версия 27.10.2024
Для PostgreSQL улучшено получение данных по использованию индексов -что стоит "актуализировать" или получить информацию в удобном виде по индексу
Добавлена закладка "скрипты" - там полезные скрипты для обслуживания баз. Например скрипт обновления только нужной статистики, а не все махом
Версия 20.10.2024
Добавлено анализ индекса для postgresql. Для MS -причесано
и сделан задел на дальнейший анализ
Версия 07.10.2024
В расширении для монитора появилась закладка с рабочими процессами - иногда удобнее чем типовое
Версия 06.10.2024
Оптимизирован запрос по использованию статистики для POSTGRESQL
В генерации скриптов удаления больших таблиц - теперь работает по выделенным
Версия 02.10.2024
Исправлена рекомендация по обновлению статистики
в форме исправлено вывод информации по измененному количеству строк после обновления статистики
Версия 01.10.2024
Только расширение
Теперь может получать все базы из кластера, даже не зарегистрированные в 1Смониторе
Версия 30.09.2024
Качественно улучшена команда переделки индекса -если первое поле тип -переставляет его на ссылку -чтобы статистика была более показательно1
Версия 29.09.2024
Добавлен деморежим -если установлен -в данных имя базы/пользователи заменяются или стандартным тестом или поля ввода уходят в режим пароля
Доработки под пострге улучшение запросов
Версия 27.09.2024
Доработки под пострге больше - чтобы не тупил если нет прав или сбой получения данных
Версия 24.09.2024
Добавлено
если обработку запустить в целевой базе заменит гуиды на объекты - удобно анализировать
конвертер даты -новый случай нашел
исправлено
ДобавитьКДате - параметры в 1с и MS SQL по разному порядок
результат - даже страшный запрос -открывается конструктором!
Версия 20.09.2024
Добавлено в расширении получение данных по сеансам кластера. если кластер не указан -все доступные
там же появился отчет по сеансам/лицензиям "итого" -удобно анализировать сколько сейчас нагрузка и сколько каких лицензий занято
Версия 18.09.2024
Если вы используете 1smonitor -в текущих запросах подтягивается информация из сеансов - кто именно пользователь, его тип подключения и сколько захвачено
В текущих запросах при клике на ожидании -переходит на страницу с описанием ожидания
Мелкие косметические изменения
17.09.2024
Причесаны описания ожиданий
В рекомендациях генерация скрипта стала логичнее -на каждой закладке можно выделить что сгенерить -и создастся скрипт с описанием подробным и готовым к запуску
11.09.2024
Добавлены запросы для Postgre -в список доступных -смотрите -наверняка там есть интересное для вас
в расширение для монитора -добавлено список сеансов. можно удобно смотреть и теперь можно тут-же "килл" виновника тормозов
09.09.2024
Улучшил советника -теперь стало более глубоко "копать" и давать советы, в итоге мне помогло найти причину тормозов ДО при переходе в "мои задачи" между папками. Было между некоторыми более 300 сек, стало порядка 1 сек...
08.09.2024
Добавлен в технические запрос MS SQL- показать запросы с предупреждениями -это на анализ что из этого можно "выжать"
Чуть подправлен конвертер в 1с запрос -
сделано большой задел для "разборки" плана запроса -ловлю "интересные" ситуации чтобы отладиться...
02.09.2024
Только расширение для монитора -отчет по лицензиям 1с
для работы надо запустить сбор сеансов - значение "количество"
и через пару часов а лучше день наслаждаться собранной статистикой
01.09.2024
Только расширение для монитора -добавил обработку получения текущих сеансов 1с
Теперь умеет через RAS и com подключаться