读性能慢-TiDB Server 读流程详解

4.2.DistSQL API

请求的分发与汇总会有很多复杂的处理逻辑,比如上小节说的出错重试、获取路由信息、控制并发度以及结果返回顺序,为了避免这些复杂的逻辑与 SQL 层耦合在一起,TiDB 抽象了一个统一的分布式查询接口,称为 DistSQL API,位于 distsql 这个包中。

DistSQL 是位于 SQL 层和 Coprocessor 之间的一层抽象,它把下层的 Coprocessor 请求封装起来对上层提供一个简单的 Select 方法。执行一个单表的计算任务。最上层的 SQL 语句可能会包含 JOIN,SUBQUERY 等复杂算子,涉及很多的表,而 DistSQL 只涉及到单个表的数据。一个 DistSQL 请求会涉及到多个 Region,我们要对涉及到的每一个 Region 执行一次 Coprocessor 请求。

监控说明:

  • 位置:TiDB – DistSQL 面板

    • Distsql Duration:Distsql 处理的时长
    • Distsql QPS:Distsql 的数量统计
    • Distsql Partial QPS:每秒 Partial Results 的数量
    • Scan Keys Num:每个 Query 扫描的 Key 的数量
    • Scan Keys Partial Num:每一个 Partial Result 扫描的 Key 的数量
    • Partial Num:每个 SQL 语句 Partial Results 的数量

  • 位置:TiDB – KV Request 面板 & Overview - TiDB 面板

    • KV Duration(KV Request Duration 999 by store/type、KV Cmd Duration 99/999)
      • KV Request Duration 999 by store:KV Request 执行时间,根据 TiKV 显示
      • KV Request Duration 999 by type:KV Request 执行时间,根据请求类型显示
      • KV Cmd Duration 99/999:KV 命令执行的时间


  • KV Count

    • KV Cmd OPS(Overview - TiDB 面板):KV 命令执行数量统计
    • KV Txn OPS(TiDB - Transaction 面板):启动事务的数量统计
    • Txn Regions Num 90(TiDB - Transaction 面板):事务使用的 Region 数量统计
    • Txn Max Write Size Bytes 100:事务写入的字节数统计
    • Txn Max Write KV Num 100:事务写入的 KV 数量统计
    • Load SafePoint OPS(TiDB - Transaction 面板):更新 SafePoint 的数量统计





6 个赞