Tidb中,MDL语句(增删改)的执行流程是怎么样的?

提问者:Rae 问题分类:面试刷题
Tidb中,MDL语句(增删改)的执行流程是怎么样的?
1 个回答
岛是海碎了的心
岛是海碎了的心
TiDB中DML执行流程如下:
1、协议验证
用户连接到TiDB Server后首先工作的是Protocol Layer模块,该模块会对用户身份、连接进行验证。
2、获取TSO
TSO是由PD Leader节点进行分配,TiDB在事务开始时会获取TSO作为start_ts,提交时再次获取TSO作为commit_ts,其最重要的目的是实现分布式事务的MVCC。
TSO为64位整型数值,由物理部分和逻辑部分组成,高48位为物理部分是unixtime的毫秒时间,低18位为逻辑部分是一个数值计数器。理论上每秒钟可产生2^18*1000=262144000个TSO。
3、SQL解析
Parse:词法分析(lex)和语法分析(yacc)
Compile:优化器
4、日志落盘
当用户侧执行commit提交数据后,会优先日志落盘(wal文件)
5、数据落盘
数据最先写入内存的memtable中
当memtable到达一定量时会刷写到内存的immutable中
当immutable到达一定量时会刷写到磁盘的rocksdb中
rocksdb底层也是以level 0向-level n不断聚合下推
发布于:4周前 (02-27) IP属地:
我来回答