При работе любой системы очень часто возникают проблемы с производительностью и недовольство пользователей "тормозами".
Учитывая, что 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.22.2106).
Но явно не использовал какие-то специфические функции платформы, поэтому будет работать и на старых релизах.
Важно
На текущий момент доделана конвертация SQL в запрос 1с, большинство из которых даже могут открываться в конструкторе запросов, что позволяет как привычно смотреть в конструкторе, та и при закрытии "отформатировать" запрос
Но
1. Не все идет гладко, не все запросы так удается конвертировать, но уже 90%+ получается
2. Понятно что такой запрос не факт что выполнится -так как там параметры вставляются строкой=гуид - как только 1с сделает функцию в запросе подставить гуид и из него найдется ссылка - то переделаю и заработает ;). Пока в планах - искать кодом по гуидам ссылки и их подставлять. но это далекие планы. Но как ни может показаться странным -запрос даже удается выполнить после небольших очевидных (человеку) точечных ручных корректировок по месту!
3- в генерируемых запросах много дублей . при генерации ссылки 1с из нее делает 3 объекта (тип объекта, тип ссылки и ссылка -и в коде выглядит как 3 раза одно и тоже) -с этим борюсь чтобы не захламлял запрос Дубли убрал
Версия 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
Небольшие косметические улучшения