【TiDB 4.0 PCTA 学习笔记】- 1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)@王晓俊-4班

课程名称:课程版本(101/201/301)+ 课程名称

学习时长:

20

课程收获:

学习了Tidb读写请求的流程。

课程内容:

目标:

了解整体架构

了解Tidb对读请求的处理

了解Tidb对写请求的处理

Part 1:

Tidb三大组件的主要功能。

Tidb组件:

数据库的sql层,对外暴露mysql的连接endpoint,负责接收客户端的连接,执行sql解析和优化,最终生成分布式执行计划,本身无状态。实践中可以启动多个Tidb实例,可以端连接可以均衡的分布在多个Tidb实例上,达到负载均衡的效果。Tidb本身不提供负载均衡的功能,需要依赖外部软件或者硬件的负载均衡实现。比如haproxy,LVS,F5等。

本身不存储sql,只是解析sql,将实际的数据请求给以及给底层的存储层,也就是Tikv,

Tikv:

基于Rockdb引擎修改实现的分布式KV存储引擎,具有高度分层的特性。

在底层RockdbKV存储上层实现了Raft协议,保证了数据的一致性。

在Raft上层又实现了MVCC特性,实现多版本并发控制。

在MVCC上层还有一层事物层,实现事项相关的功能。

Tikv是分布式KV存储引擎,不依赖分布式文件系统实现。

PD:

负责分配分布式事物的ID,事物在开始和提交的时候需要获取全局唯一的TSO号。

实现region和leader的调度,让数据和请求压力均衡的打散到Tikv节点上。

本身通过etcd实现了高可用。

Tidb 4.0实现了dashboard。

读请求处理过程:

1. 客户端和Tidb建立连接,并发送请求给Tidb。

2. Tidb接收客户端的请求,获取客户请求中的sql。

3. Tidb解析编排sql,生成AST语法树,进行优化。

4. Tidb从PD中获取start_ts

5. Tidb根据执行计划以及table元信息,生成excutor执行器

6. Tidb通过gRP将Coprocessor请求发送给Tikv

7. Tikv接收请求,查找数据并返回结果给TIDB.

8. Tidb从Tikv接收所有数据,进行整理汇总。

9.Tidb将结果发送给客户端。

写请求处理过程:

1. 客户端和Tidb建立连接,并发送请求给Tidb。

2. Tidb接收客户端的请求,获取客户请求中的sql。

3. Tidb解析编排sql,生成AST语法树,进行优化。

4. Tidb从PD中获取start_ts

5. Tidb根据执行计划以及table元信息,生成excutor执行器

6. Tidb发起Commit请求

7. Tikv按照percolator使用二阶段提交来提交数据,Tidb在commit阶段会获取commit_ts

8.  Tikv将提交的结果返回给Tidb。

9. Tidb将结果发送给Ttidb.

读写请求的区别:

1. 读请求向PD请求一次TSO,写请求有两次,一次start_ts,一次commit_ts

2. 写请求有二阶段提交和分布式事物的相关内容。

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