课程名称:3.7.3 查询优化器
学习时长:12min
课程收获:使用系统表 STATEMENTS_SUMMARY
和 SLOW_QUERY
定位不健康的查询以及分析原因
课程内容:
-
导致unhealthy query的原因
-
query health 介绍
-
影响query health原因
- 热点导致的数据库性能瓶颈
- 由于过期的统计信息导致执行计划改变
- 读写冲突
- …
-
-
如何分辨unhealthy query
-
使用 query latency (查询延迟)来辨别
- 不健康查询的 query latency 可能是不稳定的,时快时慢
- 不健康查询的query latency可能会很高
-
-
-
辨别unhealthy query的方法
-
使用STATEMENTS_SUMMARY系统表
- 是一个information_schema中的系统内存表,TiDB重启会丢失
- 通过SQL digest和paln digest分组,提供每类SQL的统计信息
- 周期性清除,默认最近30min的数据
- 历史数据存在SYSTEM_SUMMARY_HISTORY
-
SQL Digest(指纹)
-
使用SLOW_QUERY系统表
-
SLOW-QUERY-FILE 慢查询日志
- 包含执行时间超过tidb_slow_log_threshold(ms)的SQL语句
- 格式和MySQL相同,pt-query-digest同样可以支持
-
SLOW_QUERY
- information_schema中的系统表
- 内容是从slow-query-file解析而来
- 查询slow_query而不是grep slow-query-file
-
-
集群范围的对应系统表
- CLUSTER_STATEMENTS_SUMMAY
- CLUSTER_SLOW_QUERY
-
例子
-
STATEMENTS_SUMMARY查询
*
-
SLOW_QUERY查询
-
-