慢日志解读

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:2.1.9
  • 【问题描述】:如下慢日志中的commit;如何定位到具体是哪条SQL语句或者事务提交的

Time: 2020-01-19T10:08:53.55467694+08:00

Txn_start_ts: 414030163032932384

User: xx@xx.xx.xx.xx

Conn_ID: 179857

Query_time: 2.712824135

Prewrite_time: 2.709781372 Commit_time: 0.001657973 Get_commit_ts_time: 0.000131451 Write_keys: 48 Write_size: 4988 Prewrite_region: 31

DB: testdb

Is_internal: false

Digest: 9505cacb7c710ed17125fcc6cb3669e8ddca6c8cd8af6a31f6b3cd64604c3098

Num_cop_tasks: 0

Cop_proc_avg: 0 Cop_proc_p90: 0 Cop_proc_max: 0

Cop_wait_avg: 0 Cop_wait_p90: 0 Cop_wait_max: 0

commit;

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

根据慢日志信息暂时无法定位到具体的语句,如果集群中慢查询比较多,考虑开启 general log ,抓取一段时间的 log 信息,根据慢日志里面的 start_ts 来找对应的具体 SQL 信息。 在线开启 general log :curl -X POST -d “tidb_general_log=1” http://{TiDBIP}:10080/settings ,在线关闭 general log:curl -X POST -d “tidb_general_log=0” http://{TiDBIP}:10080/settings

如果事务中,单条SQL(insert、update、select等)语句执行的很快,毫秒级,但是提交达到7-9s左右,这种的一般是什么原因导致?(事务中包含三条毫秒级的SQL语句)

如果单条语句很快,批量写入很慢考虑是否是因为热点或者事务冲突导致的写入提交慢。热点问题可以看下监控部分 TiKV 面板 -> thread CPU 部分 raft store CPU 使用率是否均衡 以及 Coprocessor CPU 监控信息。事务冲突(读写、写写冲突)部分可以看下 TiDB 监控面板 KV backoff OPS 中 tikvlockfast 和 locktxn 部分来判断是读写冲突还是写写冲突。一般常见这两种,具体的还需要参考监控信息来判断。