📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

故障排查



使用 system_history 表诊断慢查询、错误、资源使用情况和登录问题。使用 profile_history 进行按操作符的执行分析(CPU 时间、I/O、spill、输出行数)。所有表都按租户隔离。

表

system_history.query_history

完整的 SQL 执行审计轨迹。每个查询都会生成包含开始/结束状态的记录。

字段类型描述
log_typeTINYINT查询状态:1=Start,2=Finish,3=Error,4=Aborted,5=Closed
log_type_nameVARCHAR字符串名称:"Start"、"Finish"、"Error"、"Aborted"、"Closed"
handler_typeVARCHAR使用的协议(例如 HTTPQuery、MySQL)
tenant_idVARCHAR租户标识符
cluster_idVARCHAR集群标识符
node_idVARCHAR节点标识符
sql_userVARCHAR执行查询的用户
sql_user_quotaVARCHAR用户配额信息
sql_user_privilegesVARCHAR用户权限
query_idVARCHAR唯一查询标识符
query_kindVARCHAR查询类型(例如 Query、Insert、CopyIntoTable)
query_textVARCHAR查询的 SQL 文本
query_hashVARCHAR查询文本的哈希值
query_parameterized_hashVARCHAR忽略字面量值后的哈希值
event_dateDATE事件日期
event_timeTIMESTAMP事件时间戳
query_start_timeTIMESTAMP查询开始时间戳
query_duration_msBIGINT总耗时(毫秒,包含排队和执行)
query_queued_duration_msBIGINT排队耗时(毫秒)
current_databaseVARCHAR当前使用的数据库
written_rowsBIGINT UNSIGNED写入的行数
written_bytesBIGINT UNSIGNED写入的字节数
join_spilled_rowsBIGINT UNSIGNEDJoin 期间 spill 的行数
join_spilled_bytesBIGINT UNSIGNEDJoin 期间 spill 的字节数
agg_spilled_rowsBIGINT UNSIGNED聚合期间 spill 的行数
agg_spilled_bytesBIGINT UNSIGNED聚合期间 spill 的字节数
group_by_spilled_rowsBIGINT UNSIGNEDGroup By 期间 spill 的行数
group_by_spilled_bytesBIGINT UNSIGNEDGroup By 期间 spill 的字节数
written_io_bytesBIGINT UNSIGNED写入到 IO 的字节数
written_io_bytes_cost_msBIGINT UNSIGNEDIO 写入耗时(毫秒)
scan_rowsBIGINT UNSIGNED扫描的行数
scan_bytesBIGINT UNSIGNED扫描的字节数
scan_io_bytesBIGINT UNSIGNED扫描期间读取的 IO 字节数
scan_io_bytes_cost_msBIGINT UNSIGNEDIO 扫描耗时(毫秒)
scan_partitionsBIGINT UNSIGNED扫描的分区数
total_partitionsBIGINT UNSIGNED涉及的分区总数
result_rowsBIGINT UNSIGNED结果中的行数
result_bytesBIGINT UNSIGNED结果中的字节数
bytes_from_remote_diskBIGINT UNSIGNED从远程磁盘读取的字节数
bytes_from_local_diskBIGINT UNSIGNED从本地磁盘读取的字节数
bytes_from_memoryBIGINT UNSIGNED从内存读取的字节数
client_addressVARCHAR客户端地址
user_agentVARCHAR客户端 user agent
exception_codeINT异常代码(0 = 成功)
exception_textVARCHAR异常消息
server_versionVARCHAR服务器版本
query_tagVARCHAR查询标签
has_profileBOOLEAN查询是否具有执行 profile
peek_memory_usageVARIANT峰值内存使用量(JSON)
session_idVARCHAR会话标识符
session_settingsVARCHAR会话设置

system_history.profile_history

每个查询的详细执行 profile。使用 jq() 提取按操作符统计的信息。

字段类型描述
timestampTIMESTAMP记录 profile 的时间
query_idVARCHAR查询 ID
profilesVARIANT操作符的 JSON 数组,每个元素包含 id、name、statistics[]
statistics_descVARIANT描述统计信息格式的 JSON

统计数组索引:[0]=OutputRows,[1]=OutputBytes,[2]=InputRows,[3]=InputBytes,[4]=CpuTime(ns)。

system_history.log_history

来自所有 TiDB Cloud Lake 节点和组件的原始日志条目。

字段类型描述
timestampTIMESTAMP日志条目的时间戳
pathVARCHAR源文件路径和行号
targetVARCHAR目标模块或组件
log_levelVARCHAR日志等级(INFO、ERROR、WARN 等)
cluster_idVARCHAR集群标识符
node_idVARCHAR节点标识符
warehouse_idVARCHAR计算集群 (Warehouse) 标识符
query_idVARCHAR关联的查询 ID
messageVARCHAR日志消息(纯文本)
fieldsVARIANT附加字段(JSON)
batch_numberBIGINT内部使用

system_history.access_history

数据血缘和访问控制审计。跟踪所有被访问或修改的对象。

字段类型描述
query_idVARCHAR查询 ID
query_startTIMESTAMP查询开始时间
user_nameVARCHAR执行查询的用户
base_objects_accessedVARIANT被访问的对象(JSON 数组)
direct_objects_accessedVARIANT预留供未来使用
objects_modifiedVARIANT被 DML 修改的对象(JSON 数组)
object_modified_by_ddlVARIANT被 DDL 修改的对象(JSON 数组)

JSON 对象字段:object_domain(Database/Table/Stage)、object_name、columns[]、stage_type、operation_type(Create/Alter/Drop/Undrop)、properties。

system_history.login_history

所有登录尝试的身份验证审计轨迹。

字段类型描述
event_timeTIMESTAMP登录事件时间戳
handlerVARCHAR协议(例如 HTTP、MySQL)
event_typeVARCHARLoginSuccess 或 LoginFailed
connection_uriVARCHAR连接 URI
auth_typeVARCHAR身份验证方法(例如 Password)
user_nameVARCHAR尝试登录的用户
client_ipVARCHAR客户端 IP 地址
user_agentVARCHAR客户端用户代理
session_idVARCHAR会话 ID
node_idVARCHAR节点 ID
error_messageVARCHAR失败时的错误消息

快速示例

查找最近一小时内的慢查询(>5s):

SELECT query_id, sql_user, query_duration_ms, query_text FROM system_history.query_history WHERE query_duration_ms > 5000 AND event_time > now() - INTERVAL 1 HOUR AND log_type = 2 ORDER BY query_duration_ms DESC LIMIT 20;

查找失败的查询:

SELECT query_id, sql_user, exception_code, exception_text, query_text FROM system_history.query_history WHERE exception_code != 0 AND event_time > now() - INTERVAL 1 HOUR ORDER BY event_time DESC;

检查登录失败:

SELECT event_time, user_name, client_ip, error_message FROM system_history.login_history WHERE event_type = 'LoginFailed' AND event_time > now() - INTERVAL 24 HOUR ORDER BY event_time DESC;

文档内容是否有帮助?