【TiDB 4.0 PCTA 学习笔记】- 3.7.3 Optimize query health(查询优化器) @1班:魔幻之翼

课程名称:课程版本(301)+ 3.7.3 Optimize query health(查询优化器)

学习时长:

10 分钟

课程收获:

掌握查询过程及耗时的构成,能够识别什么样的查询是健康的,通过统计信息快速定位那些查询不健康

课程内容:

不健康的查询怎么识别?

怎么快速定位不健康的查询?

查询不健康的场景

  • 数据库的某个节点是热点,性能瓶颈
  • 统计信息过期导致执行计划发生变化
  • 读写冲突

通过查询延迟来判断Query 是否健康

  • 不健康的Query 查询延迟不稳定
  • 不健康的Query 查询延迟很高

Query 的执行过程和耗时描述

耗时信息可以通过以下方式获取

  • 通过统计信息, statements_summary
  • 通过过慢查询, slow_query

statements_summary 说明

  • 是一张系统内存表,tidb重启后,数据会丢失
  • 会按照Sql digest 和 Plan digest 分组后进行统计
  • summary 的数据会被定时清空(默认30分钟),只展示近一段事件内的信息
  • summary_history 的结构和summary 结构完全相同,用于保存历史时间段的统计数据,可以排查和对比定位问题

Sql digest

  • original SQL
    • 实际的Sql 查询
  • Noemalized SQL
    • 对SQL 进行提取,去掉实际的变量
  • Hash of Noemalized SQL
    • 对提取后的SQL 执行Hash 操作,获取Hash 码 (指纹信息)

Plan digest 和Sql digest 类似,也是这样的操作来获取最终的指纹信息(digest)

Slow-Query-File

这个文件中有响应的慢查询的信息,有几个关键字需要注意:

  • Query_time
  • Parse_time
  • Compile_time
  • Cop_time
  • Digest
  • Plan

Slow query 格式和mysql 类似

  • Slow_query 是 tidb 的系统表
  • slow_query 中的内容的来源为 slow-query-file
  • 用SQL 查询 Slow_Query 不用再去查询slow-query-file文件

当前单个tidb服务

  • statements_summary
  • slow_query

tidb集群服务

  • cluster_statements_summary
  • cluster_slow_query

单个服务和集群服务,采用了不同的统计信息

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

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

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