【TiDB 4.0 PCTA 学习笔记】- 3.7.3 Optimize query health(查询优化器)@1班+赵燕雄

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

学习时长:30min

课程收获:

如何利用系统表定位不健康的查询

课程内容:

如何分辨查询是否健康

1、影响健康的因素:
	a、某个节点是热点,导致数据库瓶颈
	b、统计信息过期,导致执行计划发生变化
	c、读写冲突
	d、等等
2、如何辨别
	使用查询延迟来辨别是否健康
    查询阶段如下图

发现不健康的查询

1、statements_summary表
	是一张系统内存表,它的数据在TiDBserver重启后就会丢失,只保存最近30分钟的数据
2、sql指纹,同类型的sql指纹是一样的
3、slow_query表
	是从慢日志文件解析得到的
4、slow_query表和statements_summary表,仅包含当前TiDB的数据,如果集群中有多个TiDB实例,可以通过cluster_slow_query或cluster_statements_summary进行查询
5、哪种sql的查询总时间最长
	select sum_latency,avg_latency,exec_count,query_sample_text from information_schema.statements_summary order by sum_latency desc limit 3; 
6、查询某个具体的sql的平均延迟
	select avg_latency,exec_count,query_sample_text from information_schema.statements_summary where digest_text like 'select count(*) from xxxx%';
7、查询计划是否发生变更
	select digest,count(*),min(query_sample_text),min(plan),max(plan) from statements_summary group by digest having count(*) > 1;
8、查询某个用户topN的一个查询
	select query_time,query,user from cluster_slow_query where is_internal=false and user like 'xxx' order by query_time desc limit 2;
9、查询统计信息过期的慢查询
	select query,query_time,stats from cluster_slow_query where is_internal=false and stats like '%pseudo%';
10、查询计划发生变更的慢查询
	select count(distinct plan_digest) as count ,digest, min(query) from cluster_slow_query group by digest having count(*) >1 limit 3; 

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

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

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

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!