课程名称:1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)
学习时长:15min
课程收获:对 TiDB 整体架构以及读写路程有了大概的了解
课程内容:
-
TiDB整体架构
-
TiDB
-
SQL层
-
接收客户端连接
-
SQL解析及优化
-
生成执行计划
-
无状态
-
不提供负载均衡
- HaProy
- LVS
- F5
-
-
TiKV
- 存储基于rocksdb
- Raft协议
- 不依赖文件系统实现
-
PD
- 大脑
- 分配全局事务ID
- 通过etcd实现高可用
- 4.0后,PD还提供了Dashboard功能
-
-
TiDB中的读请求
-
SQL处理流程
-
![]
-
读请求处理过程
- 1、客户端与TiDB建立连接,发送请求
- 2、TiDB获取到请求中的SQL
- 3、TiDB解析编译SQL,生成并优化执行计划
- 4、TiDB从PD获取start_ts(TSO)
- 5、TiDB读取表的元数据并把执行计划发送给一系列执行器
- 6、TiDB通过gPRC把协处理器请求发送给TiKV
- 7、TiKV接收请求,搜索数据,发送结果给TiDB
- 8、TiDB从TiKV接收所有数据处理结果
- 9、TiDB把结果发送给客户端
-
-
TiDB中的写请求
- 1、客户端与TiDB建立连接,发送请求
- 2、TiDB获取到请求中的SQL
- 3、TiDB解析编译SQL,生成并优化执行计划
- 4、TiDB从PD获取start_ts(TSO)
- 5、TiDB读取表的元数据并把执行计划发送给一系列执行器
- 6、TiDB生成一个提交请求
- 7、TiKV根据过滤器使用两阶段提交(预写/提交)提交数据,TiDB会在两阶段提交中的提交阶段获取commit_ts (TSO)
- 8、TiKV把结果发送给TiDB
- 9、TiDB把结果发送给客户端
-
读写请求区别
-
读请求只向PD请求一次TSO
-
写请求要向PD请求两次TSO
- 第一次start_ts
- 第二次,两阶段提交中提交阶段commit_ts
-