TiDB 慢查询日志分析
内容提要
TiDB的慢查询日志是关键的性能监控工具,帮助追踪执行时间较长的SQL查询语句,提供性能优化线索和发现潜在瓶颈。内存映射表和界面用于搜索和查看慢查询日志。作者分享了常用的慢查询分析SQL和生成HTML格式慢日志分析结果的脚本。
延伸解读
慢查询日志与 statements_summary_history 的取舍
作者对比了慢查询日志和 statements_summary_history 表,指出后者是半小时聚合数据,在短时间段分析时可能不够精细;早期版本为纯内存表,TiDB Server OOM 重启可能导致数据丢失;且有容量限制,记录可能被驱逐。而慢查询日志存储在文件中,默认记录超过 300 毫秒的查询,更适合精细分析。读者可根据分析场景选择合适的数据源。
聚合查询 SQL 的优化技巧
作者提供的慢日志聚合查询 SQL 中,query 和 plan 字段使用标量子查询获取,而非直接 group by。经过测试,这种写法能节省大量内存,从而支持分析更长时间段的慢查询。读者在调整排序字段、查询字段和条件时,可借鉴此优化思路,以平衡资源消耗与分析范围。
单条 SQL 执行历史分析的价值
通过单条 SQL 执行历史分析 SQL,可以按小时聚合查看特定 SQL 的执行次数、成功次数、执行计划变化、扫描数据量、内存和磁盘占用等。这有助于发现执行计划突变、资源消耗趋势,为定位性能退化提供依据。作者示例中使用了 digest 过滤和近 3 天时间范围,读者可按需调整。
Q&A
TiDB的慢查询日志有什么作用?
TiDB的慢查询日志用于追踪执行时间较长的SQL查询,帮助发现性能瓶颈并提供优化线索。
如何配置TiDB的慢查询日志?
可以通过设置参数如tidb_enable_slow_log、tidb_slow_log_threshold等来配置TiDB的慢查询日志。
TiDB的慢查询日志分析方法有哪些?
常用的分析方法包括聚合查询SQL和单条SQL执行历史分析SQL,便于处理和理解慢查询日志。
TiDB的慢查询日志与MySQL有什么相似之处?
TiDB的慢查询日志原理与MySQL一致,都是在SQL执行时间超过阈值时记录相关信息。
在高负载情况下,如何处理TiDB的慢查询日志?
在高负载时,可以使用聚合查询工具来简化分析,避免短时间内生成过多慢SQL导致的分析困难。
如何生成HTML格式的慢查询日志分析结果?
可以使用提供的脚本结合定时任务和Nginx的自动索引功能来生成HTML格式的慢查询日志分析结果。