跳到主要内容
版本:Latest-3.5

Query Profile 概述

简介

Query Profile 记录了查询中所有工作节点的执行信息,帮助您快速识别影响查询性能的瓶颈。它是诊断和调优 StarRocks 查询性能的强大工具。

从 v3.3.0 开始,StarRocks 支持为使用 INSERT INTO FILES() 和 Broker Load 的数据导入提供 Query Profile。有关涉及的指标详情,请参见 OlapTableSink Operator

如何启用 Query Profile

启用 Query Profile

您可以通过将变量 enable_profile 设置为 true 来启用 Query Profile:

SET enable_profile = true;
SET GLOBAL enable_profile = true;

慢查询的 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';

运行时 Query Profile

对于长时间运行的查询,可能难以在完成前确定进度或检测问题。运行时 Query Profile 功能(v3.1+)在执行期间以固定间隔收集并报告 Query Profile 数据,提供关于查询进度和瓶颈的实时洞察。

当启用 Query Profile 时,运行时 Query Profile 会自动激活,默认报告间隔为 10 秒。可以通过 runtime_profile_report_interval 调整间隔:

SET runtime_profile_report_interval = 30;

配置

配置项类型有效值默认值描述
enable_profileSession Vartrue/falsefalse启用 Query Profile
pipeline_profile_levelSession Var1/211: 合并指标;2: 保留原始结构(禁用可视化工具)
runtime_profile_report_intervalSession Var正整数10运行时 Query Profile 报告间隔(秒)
big_query_profile_thresholdSession Var字符串0s启用 Query Profile 的查询超过此持续时间(例如,'30s','500ms','60m')
enable_statistics_collect_profileFE Dynamictrue/falsefalse启用与统计信息收集相关的查询的 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。用于快速检索上一个查询的 profile。
  • show profilelist;: 列出最近的查询及其 ID 和状态。使用此功能找到分析 profile 所需的 query_id
  • get_query_profile('<query_id>'): 返回指定查询的详细执行 profile。用于分析查询的执行方式以及时间或资源的消耗位置。
-- 启用 profiling 功能。
set enable_profile = true;
-- 运行一个简单的查询。
select 1;
-- 获取查询的 query_id。
select last_query_id();
+--------------------------------------+
| last_query_id() |
+--------------------------------------+
| bd3335ce-8dde-11ee-92e4-3269eb8da7d1 |
+--------------------------------------+
-- 获取 profile 列表
show profilelist;
-- 获取查询 profile。
select get_query_profile('502f3c04-8f5c-11ee-a41f-b22a2c00f66b')\G

在托管版本中

在 StarRocks 托管(企业)环境中,您可以方便地从 Web 控制台的查询历史中直接访问查询 profile。托管 UI 提供了每个查询执行 profile 的直观可视化表示,使您无需手动 SQL 命令即可轻松分析性能和识别瓶颈。

解读 Query Profile

Explain Analyze

大多数用户可能会发现直接分析原始文本具有挑战性。StarRocks 提供了一种 基于文本的 Query Profile 可视化分析 方法,以便更直观地理解。

托管版本

在 StarRocks 企业版(EE)中,托管版本提供了内置的查询 profile 可视化工具。该工具提供了一个交互式图形界面,与原始文本输出相比,使解释复杂的查询执行细节变得更加容易。

可视化工具的主要功能包括:

  • Operator 级别分解: 以树或图的形式查看执行计划,每个 operator 的指标(时间、行数、内存)清晰显示。
  • 瓶颈高亮: 通过颜色编码的指示器快速识别慢速或资源密集的 operator。
  • 深入分析能力: 点击任意 operator 查看详细统计信息,包括输入/输出行数、CPU 时间、内存使用等。

如何使用:

  1. 打开 StarRocks 托管 Web 控制台。
  2. 导航到 QueryQuery History 部分。
  3. 选择一个查询并点击 ProfileVisualize 按钮。
  4. 探索可视化的 profile 以分析性能并识别优化机会。

此可视化工具仅限于托管/企业版,旨在加速复杂工作负载的故障排除和性能调优。