system.trace_log
该系统表中的数据在 ClickHouse Cloud 的每个节点上本地保存。因此,要获得所有数据的完整视图,需要使用 clusterAllReplicas
函数。有关更多详细信息,请参见 here。
包含通过 采样查询分析器 收集的堆栈跟踪。
当设置 trace_log 服务器配置部分时,ClickHouse 会创建此表。另请查看设置:query_profiler_real_time_period_ns、query_profiler_cpu_time_period_ns、memory_profiler_step、memory_profiler_sample_probability、trace_profile_events。
要分析日志,请使用 addressToLine
、addressToLineWithInlines
、addressToSymbol
和 demangle
反射函数。
列:
-
hostname
(LowCardinality(String)) — 执行查询的服务器的主机名。 -
event_date
(Date) — 采样时刻的日期。 -
event_time
(DateTime) — 采样时刻的时间戳。 -
event_time_microseconds
(DateTime64) — 精确到微秒的采样时刻的时间戳。 -
timestamp_ns
(UInt64) — 采样时刻的纳秒时间戳。 -
revision
(UInt32) — ClickHouse 服务器构建修订版本。通过
clickhouse-client
连接到服务器时,您会看到类似Connected to ClickHouse server version 19.18.1.
的字符串。此字段包含revision
,而不是服务器的version
。 -
trace_type
(Enum8) — 跟踪类型:Real
表示按实际时钟时间收集堆栈跟踪。CPU
表示按 CPU 时间收集堆栈跟踪。Memory
表示当内存分配超过后续水位时收集分配和释放。MemorySample
表示收集随机分配和释放。MemoryPeak
表示收集峰值内存使用的更新。ProfileEvent
表示收集配置事件的增量。
-
thread_id
(UInt64) — 线程标识符。 -
query_id
(String) — 查询标识符,可用于获取有关从 query_log 系统表中运行的查询的详细信息。 -
trace
(Array(UInt64)) — 采样时刻的堆栈跟踪。每个元素是 ClickHouse 服务器进程内的虚拟内存地址。 -
size
(Int64) - 对于跟踪类型Memory
、MemorySample
或MemoryPeak
是分配的内存量,对于其他跟踪类型为 0。 -
event
(LowCardinality(String)) - 对于跟踪类型ProfileEvent
是更新的配置事件的名称,对于其他跟踪类型为空字符串。 -
increment
(UInt64) - 对于跟踪类型ProfileEvent
是配置事件增量的数额,对于其他跟踪类型为 0。 -
symbols
(Array(LowCardinality(String))),如果启用了符号化,包含与trace
对应的去除修饰的符号名称。 -
lines
(Array(LowCardinality(String))),如果启用了符号化,包含与trace
对应的文件名和行号字符串。
符号化可以在服务器配置文件的 trace_log
下的 symbolize
中启用或禁用。
示例