面试题答案
一键面试开启慢查询日志及设置时间阈值
- 临时设置:
- 登录到MySQL服务器。
- 使用以下命令开启慢查询日志,并设置慢查询时间阈值(例如,设置为2秒,单位为秒):
SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 2;
- 这种方式在MySQL服务重启后设置会失效。
- 永久设置:
- 找到MySQL的配置文件(通常为
my.cnf
或my.ini
,不同操作系统位置可能不同)。 - 在配置文件的
[mysqld]
部分添加或修改以下配置:
slow_query_log = 1 long_query_time = 2
- 保存配置文件后,重启MySQL服务使配置生效。
- 找到MySQL的配置文件(通常为
分析慢查询日志文件定位性能瓶颈SQL语句
- 工具分析:
- 使用
mysqldumpslow
工具:- 这是MySQL自带的用于分析慢查询日志的工具。例如,要查看执行次数最多的10条慢查询SQL语句,可以使用以下命令:
mysqldumpslow -s c -t 10 /var/log/mysql/slow - query.log
- 常用参数解释:
-s
:指定排序方式,c
表示按执行次数排序,还有a
(平均查询时间)、l
(锁定时间)、r
(返回记录数)等。-t
:指定显示的查询数量。
- 使用
pt - query - digest
工具:pt - query - digest
是Percona Toolkit中的一个工具,功能更强大。安装Percona Toolkit后,使用以下命令分析慢查询日志:
pt - query - digest /var/log/mysql/slow - query.log
- 它会生成详细的报告,包括查询的平均响应时间、执行次数、占总查询时间的百分比等信息,能更直观地帮助定位性能瓶颈SQL。
- 使用
- 手动分析:
- 直接打开慢查询日志文件,日志文件中每条记录一般包含查询执行的时间戳、查询执行的用户、执行的SQL语句等信息。通过人工查看,找出执行时间长(超过设置的
long_query_time
)的SQL语句,然后进一步分析这些SQL语句的结构,如是否缺少索引、是否有复杂的连接或子查询等,来确定性能瓶颈所在。
- 直接打开慢查询日志文件,日志文件中每条记录一般包含查询执行的时间戳、查询执行的用户、执行的SQL语句等信息。通过人工查看,找出执行时间长(超过设置的