Мониторим тяжелые запросы

13.05.19

База данных - HighLoad оптимизация

Мониторинг тяжелых запросов с сохранением результатов для истории.

Выполняя работы по укрупнению наших БД, производим всяческие оптимизации с целью снижения нагрузки на СУБД.

Одним из способов такой оптимизации является поиск тяжелых запросов. Далее определяем, что это за запросы, правим их.

В рамках публикации будет описан мониторинг запросов, создающих наибольшую нагрузку на CPU СУБД. Основой являются материалы ИТС.

На начальном периоде наших работ по оптимизации, пользовались обычной консолью MSSQL: копипастили в нее поисковый запрос, смотрели результаты, делали выводы и что-то дорабатывали. Но уже начали напрягать лишние движения по поиску файла запроса, его запуску и проч. И самое главное, исторической картины мы так и не имели. Т.е., иногда и непонятно, каков же был эффект от доработок.

Поэтому решили возложить всю работу по сбору статистики на сам MSSQL. Теперь он ежечасно запускает хранимую процедуру, которая дописывает данные в специальную таблицу (top_cpu_usage).

 
 Скрипт для таблицы

Поля таблицы совпадают с полями системной view sys.dm_exec_query_stats.

 

Хранимая процедура (sp_store_top_cpu_usage_data) написана по мотивам выше упомянутых материалов ИТС. Ее выполнение немного оптимизировано по сравнению с исходным запросом.

 
 Скрипт для хранимой процедуры

С использование GUI консоли MSSQL создали план обслуживания, ежечасно запускающий ХП.

Вуаля, наши статистики теперь сами собираются и хранятся для истории. Насчет визуализации - пока решаем. Варианты - Grafana, Kibana, MS Power BI.

 

В планах недалекого будущего будет добавление и других таблиц и ХП для сбора данных по другим критериям "тяжести" запросов.

И вот, продолжение статьи.

MSSQL highload

См. также

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

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    9253    Evg-Lylyk    61    

44

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

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

13.03.2024    5091    spyke    28    

49

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

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    7568    vasilev2015    20    

42

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

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

2 стартмани

15.02.2024    12412    241    ZAOSTG    80    

115

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

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    5667    glassman    18    

40

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

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

09.01.2024    13997    doom2good    49    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2507 24.04.19 14:03 Сейчас в теме
Статья открылась с предложения от которого немного повеселело
С использование GUI консоли MSSQL создали план обслуживания, ежечасно запускающий ХП

А так конечно задумка хорошая
Интересно еще как по вашему - какую часть проблем 1С снимает исправление тяжелых запросов, тем более не факт что они неправильные ?
2. ImHunter 327 24.04.19 14:55 Сейчас в теме
(1) Честно, не понял, от чего повеселело)

По поводу "какую часть проблем..." - свежие выводы.
Например, увидели, что большая часть нагрузки приходится за запись (insert) ТЧ определенного вида док-тов. Думаем вот, что нужно поменять архитектуру и отказаться от ТЧ в пользу РС.
Еще увидели, насколько много у нас разыменований определенных справочников. Нашли крупный источник, пофиксили, оценили эффект и решили пока остановиться на этом.
Добавили пару-тройку явно необходимых индексов.
3. capitan 2507 24.04.19 15:43 Сейчас в теме
(2)От великая и могучая русская языка )
4. Aleksey.Bochkov 3681 25.04.19 09:11 Сейчас в теме
Какую версию SQL Server используете?
В 2016 и последующих версиях появился Query Store - по-русски вроде называется Диспетчер Хранилица Запросов.
Собирает самую базовую информацию по запросам, которые потребляют много ресурсов, вместе с их планами и аггрегированной основной статистикой.
Не заменит полноценную систему мониторинга типа RedGate, но зато бесплатно и чрезвычайно удобно.

Тут не нашел публикации, поэтому наверное надо написать простую статью :).
5. ImHunter 327 25.04.19 09:39 Сейчас в теме
(4) Пользуем 2012. Но судя по перечисленному - в служебной вьюхе все это тоже есть. И планы, и аггр статистика.
6. Aleksey.Bochkov 3681 26.04.19 12:30 Сейчас в теме
7. ivanow-sv 14.05.19 12:35 Сейчас в теме
я так понимаю это все только для MS? Postgre в пролете?
8. ImHunter 327 14.05.19 12:50 Сейчас в теме
(7) Для PG вроде есть свои источники подобных статистик. Сходу нашел что-то про pg_stat_activity. Ну понятно, что один в один не применить.
Оставьте свое сообщение