查询分析器性能分析器
ClickHouse 运行采样性能分析器,用于分析查询执行情况。使用性能分析器,您可以找到查询执行过程中使用最频繁的源代码例程。您可以跟踪包括空闲时间在内的 CPU 时间和实际时间。
在 ClickHouse Cloud 中,查询性能分析器会自动启用,您可以按如下方式运行示例查询
FROM system.trace_log 更改为 FROM clusterAllReplicas(default, system.trace_log) 以从集群的所有节点中选择数据在自助管理的部署中,要使用查询性能分析器
-
设置服务器配置的 trace_log 部分。
此部分配置 trace_log 系统表,其中包含性能分析器运行结果。默认情况下已配置。请记住,此表中的数据仅对正在运行的服务器有效。服务器重启后,ClickHouse 不会清理该表,并且所有存储的虚拟内存地址都可能变为无效。
-
设置 query_profiler_cpu_time_period_ns 或 query_profiler_real_time_period_ns 设置。这两个设置可以同时使用。
这些设置允许您配置性能分析器计时器。由于这些是会话设置,因此您可以为整个服务器、单个用户或用户配置文件、您的交互式会话以及每个单独的查询获取不同的采样频率。
默认采样频率是每秒一个样本,并且同时启用了 CPU 和实际计时器。此频率允许收集足够关于 ClickHouse 集群的信息。同时,使用此频率,性能分析器不会影响 ClickHouse 服务器的性能。如果您需要分析每个单独的查询,请尝试使用更高的采样频率。
要分析 trace_log 系统表
-
安装
clickhouse-common-static-dbg包。请参阅 从 DEB 包安装。 -
通过 allow_introspection_functions 设置允许内省函数。
出于安全原因,默认情况下禁用内省函数。
-
使用
addressToLine、addressToLineWithInlines、addressToSymbol和demangle内省函数 获取函数名称及其在 ClickHouse 代码中的位置。要获取某个查询的性能分析报告,您需要从trace_log表中聚合数据。您可以按单个函数或整个堆栈跟踪进行数据聚合。
如果您需要可视化 trace_log 信息,请尝试 火焰图 和 speedscope。
示例
在此示例中,我们
-
按查询标识符和当前日期过滤
trace_log数据。 -
按堆栈跟踪进行聚合。
-
使用内省函数,我们将获得一份关于
- 符号名称和相应的源代码函数。
- 这些函数的源代码位置。