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

TiDB 中的读写流程

Part I:Introduction of TiDB Platform

image

TiDB:负责SQL处理

PD:负责调度

TiKV:负责存储

TiSpark:与Spark结合的入口

TiFlash:列存储引擎

数据库的SQL层,负责SQL的解析和优化,最终生成分布式执行计划

其本身是无状态的,可以启动多个TiDB实例,客户端的连接可以均摊在多个TiDB实例上

TiDB本身不提供负载均衡的能力,需要借助第三方工具来实现

TiDB Server本身并不存储数据,只是解析SQL将实际的SQL请求转发给底层的存储层(TiKV)

一个分布式KV存储引擎,具有高度分层特性,通过Raft协议保证数据的一致性

具有MVCC特性,实现事务的多版本并发控制

不依赖于分布式文件系统

是TiDB集群的“大脑”,负责分配分布式事务ID,事务在开始以及提交的时候需要获取一个全局唯一的TSO号

实现region以及leader的调度,让负载均衡分配至TiKV节点上

提供Dashboard功能,方便检查管理集群状态

Part II:Read Request in TiDB

  1. SQL转化为AST抽象语法树
  2. 生成逻辑执行计划
  3. 优化逻辑执行计划
  4. 依据CBO选择实际执行计划
  5. 依据实际的执行计划将请求发送给TiKV节点

读请求在TiDB的处理过程

  1. 客户端与TiDB建立链接,并发送请求
  2. TiDB接受客户端发送的请求,获取客户端发送的SQL语句
  3. TiDB进行parses和compiles阶段,对SQL文本进行解析,生成AST语法树,并进行优化
  4. TiDB与PD交互获取start_ts信息
  5. TiDB根据执行计划以及表的元数据信息生成executor执行器
  6. TiDB通过gRPC请求的方式将coprocessor请求发送给TiKV层
  7. TiKV接受到请求并按照请求过滤数据,并将数据返回给TiDB
  8. TiDB接收到所有TiKV返回的请求后,整理汇总数据
  9. TiDB将结果反馈给客户端

Part III:Write Request in TiDB

写请求的处理过程

※1~5步与读请求的处理过程是一致的

  1. 客户端与TiDB建立链接,并发送请求
  2. TiDB接受客户端发送的请求,获取客户端发送的SQL语句
  3. TiDB进行parses和compiles阶段,对SQL文本进行解析,生成AST语法树,并进行优化
  4. TiDB与PD交互获取start_ts信息
  5. TiDB根据执行计划以及表的元数据信息生成executor执行器
  6. TiDB发起commit请求
  7. 参照percolator进行二阶段提交(prewrite阶段/commit阶段)TiDB会在二阶段的commit阶段向PD请求获取commit_ts
  8. TiKV将提交的结果返回给TiDB
  9. TiDB将结果反馈给客户端