Работа с запросами в ADQM Control

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

Страница Queries
Страница Queries

В верхней части экрана можно настроить следующие фильтры для отбора данных, которые требуется вывести на странице 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

Уникальный идентификатор запроса.

В столбце также показывается иконка-индикатор статуса запроса:

statuses good dark statuses good light — запрос успешно выполнен (статус Query finished);

statuses active dark statuses active light — запрос выполняется в текущий момент времени (статус Query started);

statuses aborted dark statuses aborted light — перед началом выполнения запроса произошла ошибка (статус Exception before start);

statuses failed dark statuses failed light — во время выполнения запроса произошла ошибка (статус Exception while processing).

statuses unfinished — выполнение запроса не было завершено по какой-либо причине (статус Uncompleted).

Статус запроса дополнительно можно вывести в отдельном столбце Status, по которому доступна фильтрация

Query text

Текст запроса. Текст длинных запросов обрезается, а при наведении курсора мыши на ячейку столбца показывается в виде [query start] <…​> [query end]. Полный текст запроса можно посмотреть на отдельной странице, которая открывается при клике по идентификатору запроса в столбце Query ID

Status

Текущий статус запроса. Возможные значения:

  • Query started — запрос в процессе выполнения;

  • Query finished — запрос успешно выполнен;

  • Exception before start — перед началом выполнения запроса произошла ошибка;

  • Exception while processing — во время выполнения запроса произошла ошибка;

  • Uncompleted — выполнение запроса не было завершено по какой-либо причине, то есть в логе нет записи об успешном завершении или ошибке выполнения запроса (например, если во время выполнения запроса был перезапущен хост).

Host

Хост, на котором выполнялся запрос

Exception

Текст ошибки, произошедшей до или во время выполнения запроса

Exception code

Код ошибки, произошедшей до или во время выполнения запроса

Frequency

Сколько раз выполнялся запрос в кластере за выбранный период времени в контексте всех фильтров, установленных в данный момент на странице. Статистика считается по запросам, текст которых полностью совпадает (то есть для параметризованных запросов учитываются конкретные значения параметров)

Databases

Названия баз данных (может быть несколько — например, для запросов с JOIN), к которым обращается запрос

Tables

Названия таблиц (может быть несколько — например, для запросов с JOIN), к которым обращается запрос

Used memory

Объем памяти, используемой запросом

User

Имя пользователя ADQM, запустившего выполнение запроса. Для запросов, выполняемых на хостах кластера при запуске распределенного запроса, пользователь не определяется — в столбце User показывается пустая строка (-)

Time started

Время начала выполнения запроса

Duration

Длительность выполнения завершенного запроса или время выполнения на текущий момент (now - time_started) для запроса, который еще не завершен (когда запрос завершится, при очередном поступлении информации о запросах ADQM в ADQM Control значение в столбце Duration будет заменено на фактическое время выполнения запроса)

Average duration

Среднее время выполнения запроса. Статистика считается по запросам, текст которых полностью совпадает (то есть для параметризованных запросов учитываются конкретные значения параметров)

Read bytes

Общий объем данных, считанных из всех таблиц и табличных функций, участвующих в запросе. Для распределенных запросов это количество байтов, прочитанных на всех репликах — каждая реплика передает собственное значение Read bytes, а сервер-инициатор запроса суммирует все полученные и локальные значения

Result bytes

Объем памяти для хранения результата запроса

Result rows

Количество строк в результате запроса SELECT или количество строк в запросе INSERT

Read rows

Общее количество строк, считанных из всех таблиц и табличных функций, участвующих в запросе. Для распределенных запросов это общее количество строк, прочитанных на всех репликах — каждая реплика передает собственное значение Read rows, а сервер-инициатор запроса суммирует все полученные и локальные значения

Written rows

Количество строк, записанных запросом INSERT (для других запросов значение поля — 0)

Written bytes

Объем данных, записанных запросом INSERT (для других запросов значение поля — 0)

Type

Тип запроса. Возможные значения:

  • Write — для запросов CREATE, INSERT, ALTER, DROP, UNDROP, DELETE, MOVE, RENAME, OPTIMIZE, GRANT, REVOKE, BACKUP, RESTORE, SET, SYSTEM, KILL QUERY, BEGIN, COMMIT, ROLLBACK, SET TRANSACTION SNAPSHOT, ASYNC INSERT FLUSH, EXTERNAL DDL;

  • Read — для запросов SELECT, EXPLAIN, SHOW, DESCRIBE, CHECK, USE, EXISTS и запросов, завершившихся ошибкой SYNTAX_ERROR или INVALID_GRANT.

Чтобы вывести/скрыть поля таблицы Queries, нажмите Customize table и отметьте нужные поля в выпадающем списке. Поля Query ID и Query text всегда присутствуют в таблице запросов, их скрыть нельзя.

Управление полями таблицы Queries
Управление полями таблицы Queries

Сортировка и фильтрация данных

Для отбора необходимых данных на странице Queries можно использовать фильтры, расположенные в заголовках столбцов таблицы запросов. Чтобы открыть фильтр, кликните по иконке open filter default dark open filter default light. Фильтры доступны в следующих столбцах:

  • Query text — можно ввести сокращенный текст запроса (отображается во всплывающей подсказке, которая показывается при наведении курсора мыши на ячейку столбца) или его фрагмент;

  • Databases, Tables — нужно ввести название базы данных или таблицы соответственно (для строк, где в столбце Databases или Tables через запятую перечислены названия нескольких баз данных или таблиц, фильтрация работает только если поиск выполняется по одному значению из списка баз данных или таблиц в ячейке);

  • Exception code — нужно ввести числовой код ошибки;

  • Host, User — можно ввести названия нескольких хостов или имена нескольких пользователей соответственно (для запросов, выполнение которых инициировано распределенным запросом, фильтрация по пустому значению в столбце User не поддерживается);

  • Duration — можно ввести минимальную и максимальную длительность выполнения запросов (в секундах);

  • Status, Type — можно выбрать значение (статус или тип запроса) из выпадающего списка.

Иконка filter dark focus filter light focus означает, что применен фильтр по значениям столбца. Для сброса всех условий фильтрации нажмите reset btn dark reset btn light.

Сортировка данных возможна по столбцам Exception (фактически сортировка выполняется по коду ошибки), Exception code, Used memory, Time started, Duration, Read bytes, Result bytes, Result rows, Read rows, Written rows, Written bytes. Для изменения порядка сортировки данных по значениям столбца используйте иконку asc dark active default asc light active default или desc dark active default desc light active default в его заголовке.

Над таблицей с запросами расположена панель с индикаторами применяемых в настоящий момент условий сортировки (Sorted by) и фильтрации (Filtered by) данных.

Текущие условия сортировки и фильтрации данных
Текущие условия сортировки и фильтрации данных

Детали запроса

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

Выбор запроса
Выбор запроса

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

Страница Query details
Страница Query details

Графики

На странице 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
    График, включающий интервалы времени No data

Для графика Duration можно выбрать тип шкалы: Normal или Log (логарифмическая шкала может быть более удобна для больших временных интервалов — например, месяц или неделя).

User

С помощью графика User можно увидеть количество запросов, направленных в кластер каждым пользователем, и оценить это количество относительно числа запросов от других пользователей и общего числа всех запросов. График строится по данным о запросах от пользователей, имена которых перечислены в фильтре столбца User. Указать имена пользователей можно также в поле справа от графика (список выбранных пользователей автоматически синхронизируется с фильтром в столбце User).

График количества запросов от разных пользователей
График количества запросов от разных пользователей

Kind

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

График количества запросов различных типов
График количества запросов различных типов

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

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней