system.trace_log
此系统表中的数据在 ClickHouse Cloud 中的每个节点上本地保存。因此,要获得所有数据的完整视图,需要使用 clusterAllReplicas
函数。有关进一步的详细信息,请参见 这里。
包含由 sampling query profiler 收集的堆栈跟踪。
当 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
代表收集配置事件的增量。JemallocSample
代表收集 jemalloc 样本。MemoryAllocatedWithoutCheck
代表收集重大分配 (>16MiB) 的情况,该分配忽略任何内存限制(仅限 ClickHouse 开发人员)。
-
thread_id
(UInt64) — 线程标识符。 -
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
中启用或禁用。
示例