Обзор Query Profile

Введение

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

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

Как включить Query Profile

Включение Query Profile

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

SET enable_profile = true;
SET GLOBAL enable_profile = true;

Query Profile только для «медленных» запросов

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

-- 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

Для долгих запросов бывает сложно понять прогресс или выявить проблемы до завершения. Функция Runtime Query Profile (v3.1+) собирает и публикует данные профиля через фиксированные интервалы во время выполнения, обеспечивая оперативное представление о прогрессе и узких местах.

Когда Query Profile включён, Runtime Query Profile активируется автоматически с интервалом публикации по умолчанию 10 секунд. Изменить интервал можно через runtime_profile_report_interval:

SET runtime_profile_report_interval = 30;

Конфигурации

Configuration Item

Type

Valid Values

Default

Description

enable_profile

Session Var

true/false

false

Включает Query Profile

pipeline_profile_level

Session Var

1/2

1

1: сливать метрики; 2: сохранять исходную структуру (отключает инструменты визуализации)

runtime_profile_report_interval

Session Var

Positive integer

10

Интервал публикации Runtime Query Profile (в секундах)

big_query_profile_threshold

Session Var

String

0s

Включать Query Profile для запросов дольше указанной длительности (напр., „30s“, „500ms“, „60m“)

enable_statistics_collect_profile

FE Dynamic

true/false

false

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

Как получить Query Profile

Через Web UI

  1. Откройте в браузере http://<fe_ip>:<fe_http_port>.

  2. Нажмите queries в верхней навигации.

  3. В списке Finished Queries выберите нужный запрос и нажмите ссылку в колонке Profile.

img

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

img

Через SQL‑функцию (get_query_profile)

Примерный сценарий:

  • last_query_id(): возвращает ID последнего выполненного в вашей сессии запроса. Удобно для быстрого получения профиля последнего запроса.

  • show profilelist;: показывает недавние запросы с их ID и статусом. Используйте, чтобы найти query_id для анализа профиля.

  • get_query_profile('<query_id>'): возвращает подробный профиль выполнения указанного запроса. Используйте для анализа того, как выполнялся запрос и где тратились время/ресурсы.

-- Включить профилирование
SET enable_profile = true;

-- Выполните запрос со сканированием и агрегацией, чтобы получить содержательный профиль
-- (системная таблица гарантирует работоспособность на любом кластере)
SELECT count(*) FROM information_schema.columns;

-- Получить query_id запроса
SELECT last_query_id();
+--------------------------------------+
| last_query_id()                      |
+--------------------------------------+
| 019b364f-10c4-704c-b79a-af2cc3a77b89 |
+--------------------------------------+

-- Посмотреть список профилей
SHOW PROFILELIST;

-- Получить профиль запроса
SELECT get_query_profile('019b364f-10c4-704c-b79a-af2cc3a77b89')\G

Интерпретация Query Profile

Explain Analyze

Большинству пользователей сложно анализировать «сырое» текстовое представление. StarRocks предоставляет метод Text-based Query Profile Visualized Analysis для более интуитивного понимания.