Работа с запросами в ADQM Control
Страница Queries в web-интерфейсе ADQM Control предназначена для вывода SQL-запросов, выполняемых в кластерах ADQM, которые подключены для мониторинга. На этой странице можно получить общую информацию о запросах к базам данных кластера и посмотреть различные показатели выполнения запросов — например, чтобы проанализировать производительность запросов, объемы считываемых/записываемых данных, использование ресурсов, возникшие в ходе выполнения запросов ошибки. Данные по запросам могут быть также представлены в виде графиков, с помощью которых можно визуально оценить количество запросов разных типов, посмотреть как общее количество направленных в кластер запросов распределяется между пользователями, отследить слишком долгие запросы (на фоне других).

В верхней части экрана можно настроить следующие фильтры для отбора данных, которые требуется вывести на странице Queries:
-
Cluster — кластер ADQM, в котором выполнялись запросы.
-
Time — временной период, в течение которого были запущены запросы. При нажатии на поле открывается окно, в котором можно выбрать интервал из предложенных вариантов на вкладке Range либо самостоятельно установить границы временного диапазона (не менее 1 часа) на вкладке Calendar.
-
Refresh — частота обновления данных.
История запросов на странице Queries всегда показывается в соответствии с этими фильтрами, то есть включает все запросы, запущенные в выбранном кластере ADQM за указанный промежуток времени. Для каждого DDL-запроса (с использованием ON CLUSTER
) также отдельно выводятся запросы, выполненные на каждом хосте кластера — перед основным текстом таких запросов используется префикс /* ddl_entry=query-num */
.
Получить список самых долгих по времени выполнения запросов или запросов, использовавших наибольшее количество памяти, можно также на странице Dashboard в секции Top 10 queries.
Поля таблицы Queries
Таблица запросов на странице Queries может включать следующие поля.
Поле | Описание |
---|---|
Query ID |
Уникальный идентификатор запроса. В столбце также показывается иконка-индикатор статуса запроса:
Статус запроса дополнительно можно вывести в отдельном столбце Status, по которому доступна фильтрация |
Query text |
Текст запроса. Текст длинных запросов обрезается, а при наведении курсора мыши на ячейку столбца показывается в виде |
Status |
Текущий статус запроса. Возможные значения:
|
Host |
Хост, на котором выполнялся запрос |
Exception |
Текст ошибки, произошедшей до или во время выполнения запроса |
Exception code |
Код ошибки, произошедшей до или во время выполнения запроса |
Frequency |
Сколько раз выполнялся запрос в кластере за выбранный период времени в контексте всех фильтров, установленных в данный момент на странице. Статистика считается по запросам, текст которых полностью совпадает (то есть для параметризованных запросов учитываются конкретные значения параметров) |
Databases |
Названия баз данных (может быть несколько — например, для запросов с JOIN), к которым обращается запрос |
Tables |
Названия таблиц (может быть несколько — например, для запросов с JOIN), к которым обращается запрос |
Used memory |
Объем памяти, используемой запросом |
User |
Имя пользователя ADQM, запустившего выполнение запроса. Для запросов, выполняемых на хостах кластера при запуске распределенного запроса, пользователь не определяется — в столбце User показывается пустая строка ( |
Time started |
Время начала выполнения запроса |
Duration |
Длительность выполнения завершенного запроса или время выполнения на текущий момент ( |
Average duration |
Среднее время выполнения запроса. Статистика считается по запросам, текст которых полностью совпадает (то есть для параметризованных запросов учитываются конкретные значения параметров) |
Read bytes |
Общий объем данных, считанных из всех таблиц и табличных функций, участвующих в запросе. Для распределенных запросов это количество байтов, прочитанных на всех репликах — каждая реплика передает собственное значение |
Result bytes |
Объем памяти для хранения результата запроса |
Result rows |
Количество строк в результате запроса |
Read rows |
Общее количество строк, считанных из всех таблиц и табличных функций, участвующих в запросе. Для распределенных запросов это общее количество строк, прочитанных на всех репликах — каждая реплика передает собственное значение |
Written rows |
Количество строк, записанных запросом |
Written bytes |
Объем данных, записанных запросом |
Type |
Тип запроса. Возможные значения:
|
Чтобы вывести/скрыть поля таблицы Queries, нажмите Customize table и отметьте нужные поля в выпадающем списке. Поля Query ID и Query text всегда присутствуют в таблице запросов, их скрыть нельзя.

Сортировка и фильтрация данных
Для отбора необходимых данных на странице Queries можно использовать фильтры, расположенные в заголовках столбцов таблицы запросов. Чтобы открыть фильтр, кликните по иконке
. Фильтры доступны в следующих столбцах:
-
Query text — можно ввести сокращенный текст запроса (отображается во всплывающей подсказке, которая показывается при наведении курсора мыши на ячейку столбца) или его фрагмент;
-
Databases, Tables — нужно ввести название базы данных или таблицы соответственно (для строк, где в столбце Databases или Tables через запятую перечислены названия нескольких баз данных или таблиц, фильтрация работает только если поиск выполняется по одному значению из списка баз данных или таблиц в ячейке);
-
Exception code — нужно ввести числовой код ошибки;
-
Host, User — можно ввести названия нескольких хостов или имена нескольких пользователей соответственно (для запросов, выполнение которых инициировано распределенным запросом, фильтрация по пустому значению в столбце User не поддерживается);
-
Duration — можно ввести минимальную и максимальную длительность выполнения запросов (в секундах);
-
Status, Type — можно выбрать значение (статус или тип запроса) из выпадающего списка.
Иконка
означает, что применен фильтр по значениям столбца. Для сброса всех условий фильтрации нажмите
.
Сортировка данных возможна по столбцам Exception (фактически сортировка выполняется по коду ошибки), Exception code, Used memory, Time started, Duration, Read bytes, Result bytes, Result rows, Read rows, Written rows, Written bytes. Для изменения порядка сортировки данных по значениям столбца используйте иконку
или
в его заголовке.
Над таблицей с запросами расположена панель с индикаторами применяемых в настоящий момент условий сортировки (Sorted by) и фильтрации (Filtered by) данных.

Детали запроса
Чтобы просмотреть детальную информацию о запросе, нажмите на его идентификатор в поле Query ID таблицы запросов на странице Queries.

Открывшаяся страница Query details содержит полный текст запроса, а также текст сообщения об ошибке в случае ее возникновения при обработке запроса. В верхней части страницы также выводятся метрики запроса в столбцах, выбранных на странице Queries через Customize table.

Графики
На странице Queries можно построить различные графики для анализа запросов, направленных в таблицы кластера ADQM в указанный период времени, по следующим показателям:
-
Duration — длительность выполнения запросов;
-
User — количество запросов от конкретных пользователей;
-
Kind — количество запросов определенных типов.
Чтобы построить график, нажмите кнопку Show graph и выберите нужный тип графика из выпадающего списка.

В выпадающем меню справа от графика можно изменить тип графика, а также выбрать уровень детализации (число точек на графике): Low
или High
.

Duration
График Duration показывает общую динамику длительности выполнения запросов и позволяет найти запросы, которые выполнялись долго (по отношению к другим запросам в том же интервале времени) и могут быть предметом для анализа.

На этом графике выводится следующая информация по длительности выполнения запросов, направленных в кластер ADQM в определенный период времени:
-
95th Quantile — 95-й квантиль длительности выполнения запроса.
-
Average — среднее время выполнения запроса.
-
Extreme zone (область, заштрихованная красным цветом, если линия Average расположена выше линии 95th Quantile) — интервал времени, когда был один или несколько долгих запросов относительно большинства других. Например, на графике выше такая зона наблюдается в период времени с
6:00
до7:00
— в таблице запросов видно, что в06:58:07
был запрос длительностью1m 17s
, при этом все остальные запросы выполнились значительно быстрее (запросы в таблице отсортированы по столбцу Duration в порядке убывания).
Calm zone (область между линиями Average и 95th Quantile, заштрихованная зеленым цветом) — интервал времени, когда длительность всех запросов сопоставима. Пик в этой зоне означает, что все запросы в данный интервал времени стали выполняться дольше. -
Query — число запросов.
-
No data (область, заштрихованная серым цветом) — интервал времени, для которого нет данных о запросах с учетом выбранных фильтров. Строка No data показывается в легенде, только если на графике есть интервал времени (или несколько интервалов) с отсутствующей информацией по запросам.
Пример графика с No dataГрафик, включающий интервалы времени No data
Для графика Duration можно выбрать тип шкалы: Normal
или Log
(логарифмическая шкала может быть более удобна для больших временных интервалов — например, месяц или неделя).
User
С помощью графика User можно увидеть количество запросов, направленных в кластер каждым пользователем, и оценить это количество относительно числа запросов от других пользователей и общего числа всех запросов. График строится по данным о запросах от пользователей, имена которых перечислены в фильтре столбца User. Указать имена пользователей можно также в поле справа от графика (список выбранных пользователей автоматически синхронизируется с фильтром в столбце User).

Kind
На графике Kind можно посмотреть соотношение количества выполненных запросов различных типов — выберите нужные типы запросов в выпадающем списке справа от графика.

График строится по данным с учетом фильтров, установленных в таблице запросов. Например, на графике выше показано количество запросов, выполненных пользователем user_29
за выбранный период времени.