📚 分类
mysql
🕵🏽‍♀️ 问题描述
mysql中,如何定位慢查询?
👨‍🏫 问题讲解
❒ 慢查询常见场景

✔ 聚合查询
✔ 多表查询
✔ 表数据量过大查询
✔ 深度分页查询

❒ 表象: 页面加载过慢、接口压测响应时间过长(超过1s)

✔ 实战定位方案:根据日志打印时间,进行计算,定位耗时较长代码片段

❒ 方案一: 开源工具
✔ 调试工具:Arthas
✔ 运维工具:Prometheus、Skywalking

❒ 方案二: MySQL自带慢日志
✔ 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

#开启MySQL慢日志查询开关
slow_query_log=1
#设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2
🏳️‍🌈 问题总结
✔ 介绍一下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢,压测的结果大概5秒钟)
✔ 我们系统中当时采用了运维工具(Skywalking),可以监测出哪个接口,最终因为是sql的问题
✔ 在mysql中开启了慢日志查询,我们设置的值就是2秒,一旦sql执行超过2秒就会记录到日志中(调试阶段)
📖 问题信息
📈 浏览次数:16 | 📅 更新时间:2025-12-04 00:15:05
📦 创建信息
🏷️ ID:26 | 📅 创建时间:2024-11-07 09:09:13