Explain Analyze¶
Этот документ объясняет, как получать и анализировать текстовые Query Profile в StarRocks. Он поможет понять производительность запросов и найти способы оптимизации SQL‑запросов.
Анализ профилей существующих запросов с помощью ANALYZE PROFILE¶
Чтобы проанализировать текстовый Profile существующего (исторического или выполняющегося) запроса в кластере, сначала используйте оператор SHOW PROFILELIST, чтобы получить сводку по запросу. Команда перечисляет запросы, завершившиеся успешно, завершившиеся с ошибкой, а также те, что всё ещё выполняются (дольше 10 секунд и ещё не завершены). Через этот оператор вы получите соответствующий Query ID для последующего анализа. Синтаксис:
SHOW PROFILELIST [LIMIT <num>];
Примеры:
SHOW PROFILELIST;
SHOW PROFILELIST LIMIT 5;
Вывод:
+————————————–+———————+——-+———-+———————————————————————————————————————————–+ | QueryId | StartTime | Time | State | Statement | +————————————–+———————+——-+———-+———————————————————————————————————————————–+ | a40456b2-8428-11ee-8d02-6a32f8c68848 | 2023-11-16 10:34:18 | 21ms | Finished | SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES\n WHERE ROUTINE_TYPE=»FUNCTION» AND ROUTINE_SCHEMA = «None» | | a3fc4060-8428-11ee-8d02-6a32f8c68848 | 2023-11-16 10:34:17 | 39ms | Finished | select TABLE_NAME, COLUMN_NAME from information_schema.columns\n where table_schema = „Non … | | a3f7d38d-8428-11ee-8d02-6a32f8c68848 | 2023-11-16 10:34:17 | 15ms | Finished | select connection_id() | | a3efbd3b-8428-11ee-8d02-6a32f8c68848 | 2023-11-16 10:34:17 | 16ms | Finished | select connection_id() | | a26ec286-8428-11ee-8d02-6a32f8c68848 | 2023-11-16 10:34:15 | 269ms | Error | EXPLAIN ANALYZE SELECT c_nation, s_nation, year(lo_orderdate) AS year , SUM(lo_revenue) AS revenue FROM lineorder_flat WHERE … | +————————————–+———————+——-+———-+———————————————————————————————————————————–+
Получив Query ID, переходите к анализу Query Profile с помощью оператора ANALYZE PROFILE. Синтаксис:
ANALYZE PROFILE FROM '<Query_ID>' [, <Node_ID> [, ...] ]
Query_ID: идентификатор запроса, полученный изSHOW PROFILELIST.Node_ID: идентификатор узла профиля. Для указанных узлов StarRocks вернёт детальные метрики; для неуказанных — только сводку.
Профиль включает разделы:
Summary: сводная информация профиля.
QueryID
Информация о версии
Статус запроса:
Finished,Error,RunningОбщее время запроса
Память
Top‑10 узлов по CPU
Top‑10 узлов по памяти
Переменные сессии, отличающиеся от значений по умолчанию
Fragments: метрики по каждому узлу в каждом Fragment
Время, память, оценки стоимости, число выходных строк для узлов
Узлы с долей времени > 30% подсвечиваются красным
Узлы с долей времени 15–30% подсвечиваются розовым
Пример 1: запрос профиля без указания node ID.

Пример 2: запрос профиля с указанием node ID = 0. StarRocks вернёт все детальные метрики для узла 0 и подсветит метрики с высокой нагрузкой для упрощения поиска проблем.

Кроме того, описанные методы поддерживают показ и анализ Runtime Query Profile — профилей для выполняющихся запросов. Когда Query Profile включён, вы можете получить профили запросов, которые выполняются более 10 секунд прямо сейчас.
По сравнению с профилями завершившихся запросов, текстовый Query Profile для выполняющихся запросов содержит дополнительную информацию:
Статус операторов:
⏳: операторы не стартовали. Это может быть из‑за зависимостей.
🚀: операторы выполняются.
✅: операторы завершены.
Общий прогресс: вычисляется как
количество завершённых операторов / общее количество операторов. Из‑за отсутствия точных данных по строкам может быть не совсем точным.Прогресс оператора: вычисляется как
обработанные строки / всего строк. Если общее число строк нельзя определить, прогресс отображается как?.
Пример:

Симуляция запроса для анализа профиля через EXPLAIN ANALYZE¶
StarRocks предоставляет оператор EXPLAIN ANALYZE, позволяющий напрямую смоделировать и проанализировать профиль запроса. Синтаксис:
EXPLAIN ANALYZE <sql_statement>
При выполнении EXPLAIN ANALYZE StarRocks по умолчанию включает Query Profile для текущей сессии.
В настоящее время EXPLAIN ANALYZE поддерживает два типа SQL: SELECT и INSERT INTO. Симулировать и анализировать профиль INSERT INTO можно только для внутренних таблиц в default‑каталоге StarRocks. Обратите внимание, что при анализе профиля INSERT INTO фактическая загрузка данных не выполняется: транзакция импорта по умолчанию прерывается, чтобы исключить нежелательные изменения данных.
Пример 1: симуляция и анализ SELECT. Результаты запроса отбрасываются.

Пример 2: симуляция и анализ INSERT INTO. Транзакция загрузки будет отменена.

Ограничения¶
EXPLAIN ANALYZE INSERT INTOподдерживается только для таблиц в default‑каталоге.Для лучшего визуального восприятия вывод содержит ANSI‑символы (цвет, подсветка и др.). Рекомендуется использовать клиент MyCLI. В клиентах без поддержки ANSI (например, MySQL client) возможны мелкие артефакты отображения, обычно не влияющие на использование. Пример:
