【TiDB 4.0 PCTA学习笔记】- 1.6TiDB的读写流程 @1班 杨一

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

学习时长:

30min

课程收获:

了解tidb的读写流程。

课程内容:

TiDB的读写流程

TiDB 组件介绍

PD,TIDB,TIKV ,TISPARK ,TIFLASH

tidb


接受客户端的连接,解析sql ,将实际的请求转发给存储层。TiDB本身是无状态。可以部署多实例基于外部负载均衡软件 slb,f5 实现负载均衡。
作为整体的计算节点,不存储数据,只是转发sql 到tikv 获取数据。

tikv


TiKV 分布式强一致的k-v 存储引擎,支持MVCC 多版本控制。

pd


tidb的 大脑,提供统一事务id,时间戳。
region和lead 调度
提供dashboard 的功能。

读写流程

读流程

  1. 客户端和tidb建立连接并且发送请求到tidb
  2. tidb获取到sql 语句。
  3. tidb解析sql语句并编译,生成并且优化执行计划。
  4. tidb与pd交互获取 start_ts
  5. tidb获取到表的统计信息等元数据并且将执行计划发送给执行者。
  6. tidb 通过gRPC 调用的方式将 coprocessor 请求发送给tikv。
  7. tikv 接收请求,查找数据并且进行过滤将结果集发送给tidb。
  8. tidb 接收来自tikv的数据并进行处理汇总数据。
  9. tidb 将汇总的数据返回给客户端。

写请求

  1. 客户端和tidb建立连接并且发送请求到tidb
  2. tidb获取到sql 语句。
  3. tidb解析sql语句并编译,生成并且优化执行计划。
  4. tidb与pd交互获取 start_ts
  5. tidb获取到表的统计信息等元数据并且将执行计划发送给执行者。
  6. tidb发起commit请求。
  7. tikv使用基于percolator 的论文二阶段提交 prewrite/commit 写数据,tidb 在commit阶段获取到 commit_ts
  8. tikv 将提交的结果发送tidb
  9. tidb 将结果发送给客户端。

读vs写的差异

读请求 想pd 请求1次tso
写请求会向pd请求两次tso,一次start_ts,一次commit_ts。