【TiDB 4.0 PCTA 学习笔记】- 101+1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)@ 1班+付志强

课程名称:101+1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)

学习时长:20分钟

课程收获:了解TiDB的读写请求处理流程

课程内容:

讲师:沈刚

1、 TiDB平台介绍
组件:TiDB、TiKV、PD
TiDB:
无状态的SQL层
兼容MySQL协议
支持基于代价的优化器
支持二级索引
在线DDL
TiKV/TiFlash:
TiKV是行式存储引擎,适合事务处理
TiFlash是列式存储引擎,适合分析处理。TiFlash上的副本固定为Raft Learner角色。
通过TiDB中优化器的选择,可以实现事务类的处理查询由TiKV执行,分析类的处理查询由TiFlash执行。最大程度的隔离TP 和 AP的处理。

PD:
TiDB集群的智能大脑,部署三副本实现高可用。
1、 存储集群的元数据
2、 调度和负载均衡TiKV中的Region
3、 迁移Raft组的Leader
4、 分配全局单调递增的时间戳

TiDB组件功能
是数据库的SQL层,对外暴露MySQL协议的链接,负责接收客户端的连接。
执行SQL解析、优化,最终生成分布式执行计划。
实践中,可以启动多个TiDB实例,客户端连接可以均衡的分摊到多个TiDB实例。
TiDB本身不提供负载均衡功能,依赖外部负载均衡器。
TiDB本身不存储数据,只是解析SQL,将数据请求转发给存储层(TiKV层)
TiKV组件功能
基于RocksDB实现的分布式Key-value存储引擎。具有高度分层的特性。
在底层kv存储上,实现了Raft协议。保证数据的一致性。
在Raft层上,实现了MVCC层,实现事务的多版本控制
在最上层,是事务层,实现事务相关的内容。
TiKV是一个分布式、强一致的KV存储引擎,不依赖于分布式文件系统实现。
PD组件功能
PD作为TiDB集群的大脑,主要分配全局唯一单调递增的分布式事务ID。
另外是实现TiKV Region 和Leader的调度,让数据和请求均衡的分布到TiKV节点上。
4.0中,提供了Dashboards,方便用户管理检查集群状态。

2、 TiDB读请求
SQL执行流程
SQL转化为抽象语法树AST,通过AST生成逻辑执行计划,对生成的执行计划进行优化,优化之后根据CBO选择实际执行的执行计划,根据执行计划,将SQL请求发给TiKV节点。
读请求在TiDB中的处理过程
A、 客户端与TiDB建立连接,并发送请求给TiDB
B、 TiDB接收客户端发送的请求,获取客户端发送的SQL语句
C、 对SQL文本进行解析,生成AST语法树并优化
D、 TiDB与PD进行交互,获取start_ts信息
E、 TiDB根据执行计划和表的元信息,生成执行器
F、 TiDB通过gRPC方式,将Coprocessor请求发给TiKV
G、 TiKV接收到请求,并按照请求过滤数据,最后将数据返回给TiDB
H、 TiDB接收到所有返回结果,整理汇总数据。
I、 TiDB将整理汇总的结果返回给客户端。

3、 TiDB写请求
A、 客户端与TiDB建立连接,并发送请求给TiDB
B、 TiDB接收客户端发送的请求,获取客户端发送的SQL语句
C、 对SQL文本进行解析,生成AST语法树并优化
D、 TiDB与PD进行交互,获取start_ts信息
E、 TiDB根据执行计划和表的元信息,生成执行器
F、 TiDB发起commit请求
G、 TiKV进行二阶段提交,Prewrite阶段和commit阶段。TiDB在commit阶段向PD请求获取commit_ts
H、 TiKV将提交的结果返回给TiDB
I、 TiDB将结果返回给客户端

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

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

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

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

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。