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秒就会记录到日志中(调试阶段)