Журнал медленных SQL-запросов#

Журнал предназначен для хранения сведений о SQL-запросах, продолжительность выполнения которых превышает установленный порог.

Журнал доступен по пути: Настройка системы > Сервис > Инструменты > Монитор сессий сервера приложений > Анализ базы данных > Активные запросы.

Для открытия журнала выполните операцию Посмотреть историю.

Интерфейс журнала#

Интерфейс журнала содержит:

  • панель фильтрации;

  • список сохраненных запросов;

  • область с текстом выбранного запроса.

Панель фильтрации

Для отбора записей доступны следующие параметры:

Фильтр

Описание

Дата записи в журнал

Ограничивает список запросами, сохраненными за указанную дату

Отображать запросы на копирование

Включает отображение запросов на копирование

Список запросов

В основной таблице отображаются сохраненные сведения о медленных SQL-запросах.

Колонка

Описание

Дата записи в журнал

Дата и время формирования записи

Время выполнения (мин)

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

Состояние

Состояние сессии базы данных

Системное имя пользователя

Имя пользователя базы данных

IP-адрес клиента

IP-адрес источника запроса

Системное имя приложения

Системное имя приложения, связанного с запросом

Форма

Информация о форме, из которой выполнялся запрос

Кластерный узел

Кластерный узел, на котором выполнялся запрос

SID сеанса

Идентификатор сеанса

Стек

Трассировка стека

Текст запроса

При выборе записи в нижней области на вкладке Текст запроса отображается текст соответствующего SQL-запроса.

Настройка журнала#

Для ведения журнала должно быть включено задание Btk_SlowQueryHistoryUpdate.

В стандартной поставке задание включено и выполняется каждые 15 минут.

Включить задание или изменить расписание можно в Менеджере заданий.

По умолчанию медленным считается запрос, выполняющийся более 15 минут. Изменить этот порог через настройки системы невозможно. Порог определяется программно методом Btk_MonitorDBActivityPkg#getIntervalToAcceptAsSlowQuery.

События формирования записей#

Записи формируются заданием Btk_SlowQueryHistoryUpdate на основе данных pg_stat_activity.

В журнал сохраняются SQL-запросы, продолжительность выполнения которых превышает 15 минут.

Хранение данных#

Данные хранятся в таблице aud.Btk_SlowQueryHistory.

Хранимые поля#

  • usename — имя пользователя;

  • dcreate — дата и время формирования записи;

  • query — текст SQL-запроса;

  • nduration — продолжительность выполнения запроса в минутах;

  • state — состояние сессии базы данных;

  • sclienthostip — IP-адрес источника запроса;

  • sappname — наименование главной выборки;

  • sform — информация о форме: отображение, выборка и наименование;

  • sclusternode — кластерный узел;

  • ssid — SID сеанса;

  • stack — трассировка стека;

  • saction — действие, связанное с запросом.

Состояния сессии базы данных#

Поле state содержит состояние сессии базы данных на момент формирования записи.

Значение

Описание

idle

Сессия находится в режиме ожидания. Подключение к базе данных установлено, но запросы в данный момент не выполняются.

active

Сессия выполняет запрос.

idle in transaction

Сессия находится в режиме ожидания с открытой транзакцией. Длительные открытые транзакции могут отрицательно влиять на производительность PostgreSQL и указывать на наличие проблемы.

Заполнение действия#

Поле saction заполняется, если запрос связан с прикладным действием, которое удалось определить.

Поле может быть заполнено в следующих случаях:

  • сессия относится к выполняемому фоновому заданию, включая интеграционные задания;

  • выполняется построение печатной формы.

Программные интерфейсы#

Для регистрации механизма используется метод:

Btk_MonitorDBActivityPkg.dataInstall();

Для обновления истории медленных запросов используется метод:

Btk_MonitorDBActivityPkg.updateSlowQueryHistory();

Хранение и очистка#

Записи журнала удаляются заданием очистки. По умолчанию срок хранения составляет 30 дней и может быть изменен в настройках задания.

Настройка и запуск очистки описаны в разделе «Очистка аудитов и журналов».