【TiDB 4.0 PCTA 学习笔记】- 3.7.2 The lifecycle of a SQL and relevant metrics(TiDB 的 SQL 的生命周期和关键监控指标)@1班+赵燕雄

课程名称: 3.7.2 The lifecycle of a SQL and relevant metrics

学习时长:40min

课程收获:

了解了SQL在TiDB和TiKV中的流程,并了解相关监控项

课程内容:

SQL在TIDB组件中的流程

1、在处理sql前,先获取token
2、事务开始前获取start ts(异步获取)
3、parser解析为AST树,进行预处理,执行逻辑优化和物理优化,在开启prepare statement并命中时,会跳过解析和预处理阶段,在开启prepare plan cache并命中时,会跳过解析、预处理、优化阶段
4、执行器根据物理优化执行,事务结束后,获取commit ts 并且commit

监控各阶段

1、get token阶段
	token用于限制同时执行的sql数量,避免TiDB被打挂,如果gettoken耗时过高,证明达到了token上限,有sql在等待。
2、start tso阶段
	TSO:wait duration高说明TiDB负载高,RPC duration高说明TiDB和PD之间的网络慢,或者PD的负载高
3、parse阶段
	parse一般只有batch insert时耗时高
4、compile阶段
	包括预处理和优化两个阶段,预处理包括合法性验证和类型推导,这个阶段一般在复杂查询时慢
	开启prepared statement,可以减少parse和预处理的开销,通过prepared statement count可以看出是否生效
	prepared plan cache ,还可以节省优化的开销,通过plan cache hits 可以看出是否生效
5、execution duration:可以看出整体耗时
6、expensive executors ops:可以看出负载算子的ops,这些算子可以通过调整并发度减少延迟
7、KV request:可以看出TiKV的请求耗时,导致延迟较高的原因包括,region error(region cache过期)、锁冲突较多等
8、Dist SQL:
	是tidb向tikv发送请求和接收数据的端口,distsql是并发发送的
	1、DistSQL duration:可以看出请求的延迟,可以通过tidb_distsql_scan_concurrency调整降低延迟
	2、scan keys:体现扫描的数据量
	3、coprocessor & get & batch get:kv request ops 
9、事务
	1、KV Transaction duration:事务在TiKV的耗时
	2、local latch:在事务commit前,对事务排序用的锁,默认是关闭的,将锁冲突较多时可以打开
	3、 Transaction retry:指在出现一部分错误时会尝试,例如锁冲突

SQL在TiKV组件中的流程

1、通过grpc接收请求
2、写请求和读请求分别走不同的流程
3、写请求会经过scheduler、raftstore、rocksDB raft、rocksDB kv等阶段
4、读请求会经过readpool、rocksDB kv等阶段
5、 在rocksdb中会先写wal,访问memtable,没有命中再访问block cache,再没命中就访问SST

监控各阶段

1、gRPC message duration:反应了TIKV上处理请求的延迟
2、事务部分:prewrite和commit、resolve lock
3、raftstore模块:发生在写流程中,用于把raftlog同步到所有副本,raft propose(propose wait duration/apply wait duration )和raft io (appendlog/applylog/commitlog)
4、coprocessor模块:执行时间(request duration),等待时间(wait duration),如果等待时间长,可以通过打开coprocessor cache,通常与处理的数据量相关
5、rocksDB:每个TiKV有两个rocksDB实例,一个用来存储raft日志,一个用来存储用户数据,在读数据时,先读memtable,没命中再读block cache,再不命中读SST,写数据(write duration),compaction(compaction operations(次数)/compaction duration(耗时))

学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

学习过程中参考的其他资料

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!