【TiDB 4.0 PCTA 学习笔记】- 2.5.1 The Lifecycle of a SQL Statement(在 TiDB 中一条 SQL 的生命周期)@2班_陈锦楠

2.5.1 The Lifecycle of a SQL Statement(在 TiDB 中一条 SQL 的生命周期)

TiDB 架构

TiKV 架构

TiDB 数据组织

  • 数据从表的行和列形式 → 底层 k-v 形式的存储
  • 对于表中的行,行数据会编码成 k-v 键值对的格式

image-20201221231000738

TiDB 数据组织的示例

  • 在 TiKV 中做全表扫,只要扫描 t101 前缀的数据,就可以拿到全表的数据

一个 SQL 在 TiDB 中的生命周期

image-20201221231714629

  • 查询优化
    • SQL 解析,得到一个抽象语法树(AST)
    • 逻辑优化器,对 SQL 语法进行优化(例如:谓词下推),得到一个逻辑执行计划
    • 物理优化器,根据逻辑执行计划和统计信息生成一个物理执行计划
    • 统计信息
  • 查询执行
    • TiDB 层的 Root 执行器,根据多个 Coprocessor 执行返回的结果进行计算
    • 分布式 SQL 下推到 TiKV 层进行计算
    • TiKV 层的 Coprocessor 执行器

示例

  • 客户端发起一个查询,求 AVG(b) 的值
  • 下推到多个 TiKV 进行计算,减少返回的数据量,提高计算性能
    • 转换成 sum(b) 和 cnt(b)
    • 不在每个 TiKV 中直接取 avg(b) 的值,是为了避免精度损失
  • TiDB 收到 所有 TiKV 返回的结果进行汇总处理,计算出最终的值返回给客户端