功能
EVENT_TRACE 视图用于查询 TDSQL Boundless 内核中的事件信息。事件是一种特殊的日志类型,包含与跟踪数据进行联动的上下文信息,帮助用户深入了解系统内部操作流程。默认情况下,
EVENT_TRACE 记录 SQL 执行过程中的事件(如 query end、closing tables 等)。当系统变量 tdstore_rpc_stat_mode 设置为 2 时,还会记录 TDStore 存储引擎的 RPC 调用事件,事件名格式为 tdstore_rpc/<RPC 类型>/begin 和 tdstore_rpc/<RPC 类型>/end,通过 trace_id 和 span_id 可将 RPC 调用与 SQL 执行链路关联。字段说明
字段名 | 类型 | 描述 |
event_timestamp | timestamp | 事件发生的时间戳 |
event_name | varchar(65535) | 事件的名称 |
tid | longlong | 事件发生的线程 ID |
trace_id | byte | 事件对应的跟踪链路的标识 ID |
span_id | longlong | 对应 SPAN 的唯一标识 |
示例
tdsql > SELECT * FROM INFORMATION_SCHEMA.EVENT_TRACE;+----------------------------+----------------------+---------+----------------------------------+---------+| event_timestamp | event_name | tid | trace_id | span_id |+----------------------------+----------------------+---------+----------------------------------+---------+| 2025-12-01 16:34:44.589668 | query end | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:44.589679 | closing tables | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:44.589685 | freeing items | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:44.589723 | cleaning up | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.798871 | starting | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799009 | checking permissions | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799031 | Opening tables | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799151 | init | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799156 | System lock | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799193 | optimizing | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799195 | optimizing | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799202 | statistics | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799230 | preparing | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799251 | statistics | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799256 | preparing | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.799265 | executing | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.803909 | end | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.803913 | query end | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.803925 | closing tables | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.803937 | freeing items | 1048622 | 00000000000000000000000000000000 | 0 || 2025-12-01 16:34:45.804007 | cleaning up | 1048622 | 00000000000000000000000000000000 | 0 |+----------------------------+----------------------+---------+----------------------------------+---------+21 rows in set (0.02 sec)
查询 TDStore RPC 调用事件并计算每次调用的耗时。
先将
tdstore_rpc_stat_mode 设置为 2 开启 RPC 事件的 Event Trace 记录,执行业务 SQL 后,通过 begin/end 事件对的 span_id 关联计算端到端耗时:-- 开启 RPC 统计 + Event TraceSET GLOBAL tdstore_rpc_stat_mode = 2;-- 执行业务 SQL(触发 TDStore RPC 调用)INSERT INTO t1 VALUES (1, 'test');-- 查询 1: 所有 beginSELECT event_name, event_timestampFROM information_schema.event_traceWHERE event_name LIKE 'tdstore_rpc/%/begin'ORDER BY event_name, event_timestamp;-- 查询 2: 所有 endSELECT event_name, event_timestampFROM information_schema.event_traceWHERE event_name LIKE 'tdstore_rpc/%/end'ORDER BY REPLACE(event_name, '/end', '/begin'), event_timestamp;
说明:
tdstore_rpc_stat_mode 设置为 0(默认)时不记录 RPC 事件,设置为 1 时仅统计 RPC 调用但不写 Event Trace,设置为 2 时同时统计并写 Event Trace。RPC 事件的
event_name 格式为 tdstore_rpc/<RPC 类型>/begin(调用开始)和 tdstore_rpc/<RPC 类型>/end(调用结束),其中 <RPC 类型> 如 kPutRecord、kGetRecord、kCommit 等。同一次 RPC 调用的
begin 和 end 事件具有相同的 span_id,可通过该字段关联计算耗时。tdstore_rpc_stat_mode = 2 会为每次 RPC 调用写入2条事件(begin/end 各一条),在 RPC 调用密集场景下会产生大量 Event Trace 数据,建议在问题定位时临时开启,排查完毕后恢复为 0 或 1。