Перейти к основному содержимому

Обзор Query Profile

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

Начиная с версии 1.5.0, Selena поддерживает предоставление Query Profile для загрузки данных с помощью INSERT INTO FILES() и Broker Load. Подробности о задействованных метриках см. в OlapTableSink Operator.

Включение Query Profile

Вы можете включить Query Profile, установив переменную enable_profile в true:

SET enable_profile = true;

Включение Query Profile для медленных запросов

Не рекомендуется включать Query Profile в производственной среде на глобальной, долгосрочной основе. Это связано с тем, что сбор и обработка данных Query Profile может создать дополнительную нагрузку на систему. Однако, если вам нужно захватывать и анализировать медленные запросы, вы можете включить Query Profile только для медленных запросов. Это можно достичь, установив переменную big_query_profile_threshold на продолжительность времени больше 0s. Например, если эта переменная установлена в 30s, это означает, что только запросы с временем выполнения более 30 секунд будут запускать Query Profile. Это обеспечивает производительность системы при эффективном мониторинге медленных запросов.

-- 30 секунд
SET global big_query_profile_threshold = '30s';

-- 500 миллисекунд
SET global big_query_profile_threshold = '500ms';

-- 60 минут
SET global big_query_profile_threshold = '60m';

Включение Runtime Query Profile

Некоторые запросы могут выполняться долго, от секунд до часов. Часто сложно определить, продолжается ли выполнение запроса или система зависла до завершения запроса. Для решения этой проблемы Selena представила функцию Runtime Query Profile в версии 3.1 и более поздних. Эта функция позволяет собирать и отчитываться о данных Query Profile через фиксированные интервалы времени во время выполнения запроса. Это дает вам представление о ходе выполнения запроса и потенциальных узких местах в реальном времени, не дожидаясь завершения запроса. Таким образом, вы можете более эффективно мониторить и оптимизировать процесс запроса.

Когда Query Profile включен, эта функция автоматически активируется с интервалом отчетности по умолчанию 10 секунд. Вы можете настроить интервал, изменив переменную runtime_profile_report_interval:

SET runtime_profile_report_interval = 30;

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

Настройка поведения Query Profile

Настройки конфигурации являются либо переменными сессии, либо элементами динамической конфигурации FE.

Переменные сессии

enable_profile
  • Допустимые значения: true/false
  • Значение по умолчанию: false
  • Описание: Включать ли Query Profile. true означает включить эту функцию.
pipeline_profile_level
  • Допустимые значения: 1/2
  • Значение по умолчанию: 1
  • Описание: Установить уровень Query Profile. 1 указывает на объединение метрик Query Profile; 2 указывает на сохранение оригинальной структуры Query Profile. Если этот элемент установлен как 2, все инструменты визуализированного анализа больше не будут применимы, поэтому обычно не рекомендуется изменять это значение.
runtime_profile_report_interval
  • Допустимые значения: Положительное целое число
  • Значение по умолчанию: 10
  • Описание: Интервал отчетности Runtime Query Profile. Единица: секунды.
big_query_profile_threshold
  • Допустимые значения: Строка
  • Значение по умолчанию: 0s
  • Описание: Если время выполнения большого запроса превышает это значение, Query Profile автоматически включается для этого запроса. Установка этого элемента в 0s указывает, что эта функция отключена. Его значение может быть представлено целым числом, за которым следует единица, где единицами могут быть ms, s, m.

Элементы динамической конфигурации FE

enable_statistics_collect_profile
  • Допустимые значения: true/false
  • Значение по умолчанию: false
  • Описание: Включать ли Query Profile для запросов, связанных со сбором статистики. true означает включить эту функцию.
profile_info_format
  • Допустимые значения: default/json
  • Значение по умолчанию: default
  • Описание: Формат Profile, выводимого системой. При установке в default, Profile имеет формат по умолчанию. При установке в json, система выводит Profile в формате JSON.

Получение Query Profile через Web UI

Следуйте этим шагам для получения Query Profile:

  1. Откройте http://<fe_ip>:<fe_http_port> в вашем браузере.
  2. На появившейся странице нажмите queries в верхней навигации.
  3. В списке Finished Queries выберите запрос, который хотите проанализировать, и нажмите ссылку в колонке Profile.

img

Вы будете перенаправлены на детальную страницу выбранного Query Profile.

img

Получение Query Profile через get_query_profile

Следующий пример показывает, как получить Query Profile через функцию get_query_profile:

-- Включить функцию профилирования.
set enable_profile = true;
-- Выполнить простой запрос.
select 1;
-- Получить query_id запроса.
select last_query_id();
+--------------------------------------+
| last_query_id() |
+--------------------------------------+
| bd3335ce-8dde-11ee-92e4-3269eb8da7d1 |
+--------------------------------------+
-- Получить query profile.
select get_query_profile('502f3c04-8f5c-11ee-a41f-b22a2c00f66b')\G

Анализ Query Profile

Необработанное содержимое, генерируемое Query Profile, может содержать множество метрик. Подробное описание этих метрик см. в Структура Query Profile и детальные метрики.

Однако большинство пользователей могут обнаружить, что непосредственный анализ этого необработанного текста не является простым. Для решения этой проблемы Selena предоставляет метод Текстового визуализированного анализа Query Profile. Вы можете использовать эту функцию для получения более интуитивного понимания сложного Query Profile.