Руководство пользователя

Query Monitor

Страница Query Monitor отображает доступную для просмотра текущему пользователю ADBCC информацию о запросах, выполняемых в данный момент времени пользователями ADB (Рис.77.). На странице отображаются выполняющиеся (Running), находящиеся в очереди ожидания исполнения (Queued), а также заблокированные запросы (Blocked). В зависимости от присвоенных прав доступа пользователю доступна отмена выполнения некоторых или всех запросов в списке.

../_images/query_monitor_overview.png

Рис. 77. Query Monitor

Информация о запросах

Для каждого запроса в списке указывается:

  • Query ID – уникальный идентификатор запроса, например: 1590901567-16-2. Значение является ссылкой на страницу с расширенной информацией о запросе. Идентификатор формируется из значений параметров tmid, ssid и ccnt для каждого запроса:

    • tmid – временная метка старта кластера;
    • ssid – id сессии;
    • ccnt – номер команды в рамках сессии.
  • Text – первые 20 символов текста запроса. При наведении текст отображается в полном виде;

  • Status – статус запроса, принимает одно из следующих значений:

    • Queued – запрос находится в очереди ожидания исполнения;
    • Running – запрос выполняется;
    • Blocked – выполнение запроса заблокировано ожиданием получения ресурсной очереди или слота ресурсной группы; блокировкой, вызванной синхронной репликацией или удерживаемой другой транзакцией на объекте базы данных (lock);
    • Cancelling – отправлен запрос на отмену выполнения.

    В случае, если статус Blocked вызван блокировкой на объекте базы данных, удерживаемой другой транзакцией, нажатие на пиктограмму справа от значения в поле status открывает окно с дополнительной информацией (Рис.78.). В окне содержится перечисление блокирующих запросов, для каждого из которых указывается:

    • queryId – уникальный идентификатор. Значение параметра ssid запроса, выполняющегося в режиме utility, равно -1. В некоторых случаях, когда невозможно определить номер команды в рамках сессии, параметр ccnt содержит значение X;
    • target – информация об объекте, на котором удерживается блокировка;
    • segments – идентификатор сегмента, на котором удерживается блокировка;
    • user – пользователь, выполнивший запрос;
    • blocked for – длительность блокировки.
    ../_images/query_monitor_blockers.png

    Рис. 78. Дополнительная информация о блокировке

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

  • User – пользователь ADB, выполнивший запрос;

  • Database – название базы данных, в которой был выполнен запрос;

  • Workload – название ресурсной группы или ресурсной очереди, управляющей данным запросом;

  • Submitted – время создания запроса;

  • Queued time – длительность нахождения запроса в очереди ожидания исполнения;

  • Run time – длительность исполнения запроса.

Отмена выполнения запроса

ADBCC предоставляет возможность отмены запросов, выполняющихся в кластере ADB. Для отмены одного или нескольких запросов необходимо (Рис.79.):

  1. Выбрать при помощи чекбоксов в начале строк таблицы все необходимые запросы (выбор доступен только для запросов, отмена которых разрешена, исходя из прав доступа, определенных для пользователю);

  2. Выбрать способ отмены запроса и нажать соответствующую кнопку справа над таблицей:

    • Cancel – отмена выполнения запроса путем вызова функции pg_cancel_backend, отменяющей запрос в обслуживающем процессе;
    • Terminate – отмена выполнения запроса путем вызова функции pg_terminate_backend, завершающей обслуживающий процесс, в котором выполняется запрос.
../_images/query_monitor_kill.png

Рис. 79. Выбор запроса для отмены выполнения

History

На странице History можно получить информацию о запросах, выполнявшихся в кластере ADB в заданный период времени (Рис.80.).

../_images/history_overview.png

Рис. 80. Query History

Панель фильтров, позволяющая ограничивать вывод истории запросов, открывается при нажатии на иконку в правом верхнем углу экрана. Доступны следующие опции (Рис.81.):

  • Ограничение периода времени, в который был создан запрос, по дате (Рис.82.) и времени (Рис.83.);
  • Подстрока, которая должна содержаться в тексте запроса.
../_images/history_filter.png

Рис. 81. Панель фильтров для истории запросов

../_images/filter_date.png

Рис. 82. Установка даты начала/конца периода

../_images/filter_time.png

Рис. 83. Установка времени начала/конца периода

Для каждого запроса в списке указывается:

  • Query ID – уникальный идентификатор запроса, например: 1590901567-16-2. Значение поля является ссылкой на страницу с расширенной информацией о запросе. Идентификатор формируется из значений параметров tmid, ssid и ccnt для каждого запроса:

    • tmid – временная метка старта кластера;
    • ssid – id сессии;
    • ccnt – номер команды в рамках сессии.
  • Text – первые 20 символов текста запроса. При наведении текст отображается в полном виде;

  • Status – итоговый статус запроса, принимает одно из следующих значений:

    • Done – запрос успешно выполнен;
    • Cancelled – выполнение запроса отменено;
    • Error – во время исполнения запроса произошла ошибка.
  • User – пользователь ADB, выполнивший запрос;

  • Database – название базы данных, в которой был выполнен запрос;

  • Submitted – время создания запроса;

  • Queued time – длительность нахождения запроса в очереди ожидания исполнения;

  • Run time – длительность исполнения запроса;

  • Ended – время завершения исполнения запроса: как в результате успешного выполнения, так и в следствие ошибки или отмены выполнения.

Query Details

Страница Query Details содержит расширенную информацию о выполняющемся запросе или об одном из запросов истории (Рис.84.).

../_images/query_details_overview.png

Рис. 84. Query Details - выполняющийся запрос

Информация о запросе

В верхней части страницы отображается текущий статус и длительность исполнения запроса, а также следующая информация:

Details

  • User – пользователь ADB, выполнивший запрос;

  • Database – название базы данных, в которой выполнен запрос;

  • Workload – название ресурсной группы или ресурсной очереди, управляющей данным запросом;

  • Planner – планировщик запросов, используемый для данного запроса: Legacy или GPORCA;

  • Queued Time – длительность нахождения запроса в очереди ожидания исполнения;

  • Submitted – время создания запроса;

  • Run Time – длительность исполнения запроса;

  • Est. progress – оценка прогресса выполнения запроса в процентах. Значение рассчитывается на основании оценок стоимости (коэффициента трудоемкости выполнения) и прогресса для каждого узла плана запроса:

    ../_images/node_progress.png

    Где

    • NodeProgress – прогресс узла;
    • ActualRows – реальное количество извлеченных строк (кортежей);
    • EstimatedRows – предположение планировщика о количестве строк (кортежей), которое будет извлечено для данного узла.

    Тогда общий прогресс, рассчитанный на основании суммы оценок для всех узлов плана:

    ../_images/overall_progress.png

    Где Est.Cost(x) – оценка стоимости узла, сделанная планировщиком.

    Оценка прогресса не является точной, так как при расчетах во внимание не принимается множество дополнительных факторов, влияющих на процесс исполнения запроса.

Performance

Содержимое данного блока меняется в зависимости от статуса запроса.

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

  • Spill Files – объем spill-файлов, используемых в данный момент времени. ADB создает spill-файлы, если доступной памяти ОС оказывается недостаточно.

Для запроса из истории блок содержит следующую информацию:

  • Spill Files (max) – максимальный объем используемых spill-файлов, зафиксированный за время выполнения запроса;
  • Spill Files (skew) – величина, отражающая “перекос” в объеме созданных на сегментах spill-файлов для момента времени, в который наблюдалась величина Spill Files (max). Значение, отличное от нуля, говорит о том, что один из сегментов использовал больший объем spill-файлов, чем остальные. Расчет значения производится следующим образом:
../_images/spill_files.png
../_images/query_details_overview_history.png

Рис. 88. Query Details - запрос из истории

Query Text

Текст запроса, отправленный на исполнение пользователем.

Locks&Blocks

  • Locks – количество блокировок на объектах базы данных, полученных данным запросом. При нажатии на значение открывается список всех удерживаемых блокировок с указанием режима и queryId блокируемых запросов (Рис.89.);

  • Blocks – список идентификаторов всех запросов, блокирующих выполнение данного запроса, с указанием режима блокировки, полученной каждым из них (Рис.90.).

    Значение параметра ssid уникального идентификатора запроса, выполняющегося в режиме utility, равно -1. В некоторых случаях, когда невозможно определить номер команды в рамках сессии, параметр ccnt содержит значение X.

../_images/query_details_locks.png

Рис. 89. Блокировки, полученные запросом

../_images/query_details_blocks.png

Рис. 90. Список запросов, блокирующих выполнение запроса

Plan&Progress

Блок содержит графическое представление дерева плана, отражающее динамику выполнения запроса. В каждом узле отображается тип (выполняемая операция) и прогресс выполнения. Значение прогресса, превышающее 100%, свидетельствует о том, что планировщик сделал неправильное предположение о количестве кортежей, которое должно быть извлечено при выполнении данного узла.

При нажатии на узел открывается панель с дополнительной информацией (Рис.91.):

  • Cost – коэффициент трудоемкости выполнения узла плана;
  • Relation – используемая таблица (опционально);
  • Row Skew – перекос в данных. Разность между единицей и отношением среднего значения к максимальному количеству кортежей, полученных с сегментов;
  • Est. Tuples – прогнозируемое количество кортежей;
  • Actual Tuples – реальное количество извлеченных кортежей;
  • Operation Keys – дополнительные условия, используемые при выполнении некоторых операций (например, Hash Key, Join Filter, Merge Key, Filter).

Цвет узла указывает на его состояние:

  • Белый – проинициализирован, выполнение не начато;
  • Темно-зеленый – выполняется;
  • Светло-зеленый – выполнение закончено.
../_images/dynamic_plan.png

Рис. 91. Графическое представление дерева плана

Textual plan

Текстовое представление плана запроса – результат выполнения команды Explain.

Кнопка planchecker в левом верхнем углу открывает текст запроса в сервисе https://planchecker.arenadata.io/, позволяющем получить детальную информацию о возможных проблемах производительности.

Отмена выполнения запроса

Исходя из прав доступа, определенных для пользователя, в правом верхнем углу страницы могут быть доступны кнопки, соответствующие двум способам отмены выполнения запроса (Рис.92.):

  • Cancel – отмена выполнения запроса путем вызова функции pg_cancel_backend, отменяющей запрос в обслуживающем процессе;
  • Terminate – отмена выполнения запроса путем вызова функции pg_terminate_backend, завершающей обслуживающий процесс, в котором выполняется запрос.
../_images/query_details_kill.png

Рис. 92. Кнопки отмены выполнения запроса