【TiDB 4.0 PCTA 学习笔记】- 3.7.2 The lifecycle of a SQL and relevant metrics(TiDB 的 SQL 的生命周期和关键监控指标) @1班+李墨白

课程名称:课程版本(101/201/301)+ 3.7.2 The lifecycle of a SQL and relevant metrics(TiDB 的 SQL 的生命周期和关键监控指标)

学习时长:

15min

课程收获:

掌握 tidb 和 tikv 中 SQL 处理的过程,及相关关键的监控指标

课程内容:

上图描述 TIDB中 SQL 的流转过程及流向

  • 处理 SQL 之前,获取token
  • 事务开始之前,获取 TSO 时间戳
  • 进入到解析环节,由 Parse 解析为 AST tree ,进行预处理,逻辑优化和物理优化
  • 进入到执行环节,根据物理计划调度执行
  • 获取TSO,在提交事务,事务全部完成

两种特殊场景

  • Prepared Statement
    • 进入到逻辑优化环节,跳过Parse,预处理环节
  • Prepared Plan Cache
    • 进入到执行环节

监控指标

Get token

  • token 可以限制 SQL 并发数
  • 可以更新配置信息,来调整 token limit 参数
  • Grafana 可以监控 Get Token 的延迟信息

Get TSO

  • 异步获取 PD 的时间戳
  • Dashboard可以获取到 SQL执行状态和慢查询
  • Grafana 可以监控两个关键参数
    • PD TSO Wait Duration
    • PD TSO RPC Druation

Parse

  • Dashboard可以获取到 SQL执行状态和慢查询
  • Grafana Parse Duration

Compile

  • 预处理 和 优化处理
  • Dashboard可以获取到 SQL执行状态和慢查询
  • Grafana Compile Duration

Prepared Statements

  • 节省Parse 及预处理的开销
  • Granfa Prepare Statement Count

Prepared Plan cache

  • 节省优化的开销
  • Granfa Plan Cache Hits

执行环节

  • Execution Duration 获取整体执行的耗时
  • Expensive Executors OPS 复杂算子耗时
  • KV Request
    • kv request duration 99
    • ticlient region Error ops
    • lock resolve ops

DistSql

DistSql 发动 kv 请求和获取 kv 结果

  • distSql Duration 可以获取 kv 延迟的情况
    • 请求推送都是并发级别的
    • 来源于系统变量 tidb_distsql_scan_concurrency
  • Scan keys
  • Dashboard可以获取到 SQL执行状态和慢查询
    • Grafana Scan keys
  • Comprocessor & Get & Batch Get
    • Kv request OPS

Transacation

  • kv Transaction duration 事务整体耗时
  • local latch
    • tidb 在提交事务之前,对事务排序用的锁
    • 默认锁是关闭的,发生冲突是开启
    • Dashboard可以获取到 SQL执行状态和慢查询
    • Grafana local latch wait time
  • Transaction retry
    • 部分错误,尝试写冲突等等
    • Dashboard可以获取到 SQL执行状态和慢查询
    • Grafana Transaction Retry Num

Tikv Sql 处理过程及流向

读和写的过程不一样,需要根据场景进行分析

kv request

  • gRPC Message Duration 反应了 kv 请求的延时情况
    • kv_get / kv_batch_get / coprocessor
    • kv Duration in tidb = gRPC Message Duration + network RTT

transaction

  • Prewrite & commit
  • Resolve Lock

Raft Store

  • Raft propose
    • propose wait duration
    • apply wait duration
  • Raft IO
    • Append log duration
    • Apply log duration
    • Commit log duration

Coprocessor

  • Execution Time
  • Wait Time

RocksDB

  • read
    • get / seek duration
    • memtable hit
    • block cache hit
    • SST read druation
  • write
    • write duration
  • compaction
    • compacation operations
    • compacation duration

学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

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