前言
- MySQL版本:5.7.17
- 本文中只展示了部分MySQL命令示例,相关参数配置同样可以在MySQL配置文件中进行设置
- 各平台各版本的MySQL操作方式也许各有不同,本文仅供参考,如果错误之处,欢迎指正
1. 慢查询日志的功能及主要参数
1.1 功能
慢查询日志(slow query log)能够记录执行时间超过某阈值的SQL语句,且只记录成功执行的SQL语句。慢查询日志文件存储在MySQL服务器上,默认文件名为主机名-slow.log,可以帮助DBA定位可能存在问题的SQL语句,从而进行SQL语言层面的查询优化。
1.2 主要参数介绍
-
slow_query_log:慢查询日志功能状态 -
slow_query_log_file:慢查询日志文件在服务器上的绝对路径与文件名 -
long_query_time:慢查询日志阈值 -
log_queries_not_using_indexes:是否将未使用索引的查询语句记录在慢查询日志中(不论执行时间) -
log_output:慢查询日志(slow query log)和通用日志(general log)的存储方式,若为FILE则表示会输出到对应的日志文件中,若为TABLE则表示会输出到表mysql.slow_log和mysql.general_log中,若为NONE则表示不输出,可以同时设置FILE和TABLE参数
2. 慢查询日志基本操作
2.1 设置慢查询日志功能
slow_query_log变量为系统全局变量GLOBAL,只能进行全局修改,且修改时需要超级权限
# 查看功能状态
SHOW GLOBAL VARIABLES LIKE 'slow_query_log';
# 开启/关闭
-- 开启
SET GLOBAL slow_query_log=1;
-- 关闭
SET GLOBAL slow_query_log=0;
2.2 设置慢查询日志存储路径
slow_query_log_file变量的值代表慢查询日志在MySQL服务器上的存储路径,此变量也是系统全局变量GLOBAL,只能进行全局修改,且修改时需要超级权限
# 查看slow.log存储路径
SHOW GLOBAL VARIABLES LIKE 'slow_query_log_file';
# 设置slow.log存储路径
SET GLOBAL slow_query_log_file='<存储路径>';
2.3 设置慢查询日志阈值
long_query_time变量有全局变量和会话变量两种,创建会话时后此参数初始值默认为全局变量,可以通过设置会话变量来改变当前会话中的慢查询日志阈值
# 查看慢查询阈值全局变量long_query_time(默认值为10秒)
SHOW GLOBAL VARIABLES LIKE '%long_query_time%';
# 设置慢查询阈值全局变量
SET GLOBAL long_query_time=3;
# 查看慢查询阈值会话变量
SHOW SESSION VARIABLES LIKE '%long_query_time%';
# 设置慢查询阈值会话变量
SET SESSION long_query_time=10;
2.4 设置将未使用索引的查询语句直接记录到慢查询日志中
log_queries_not_using_indexes参数决定是否将未使用索引的查询语句直接记录到慢查询日志中(不论执行时间),此变量仅为全局变量GLOBAL
# 查看是否将为使用索引的查询语句直接记录到慢查询日志中
SHOW GLOBAL VARIABLES LIKE '%log_queries_not_using_indexes%';
# 设置直接将未使用索引的查询语句记录到慢查询日志中
SET GLOBAL log_queries_not_using_indexes=1;
# 关闭
SET GLOBAL log_queries_not_using_indexes=0;
2.5 设置慢查询日志存储方式
log_output参数仅为全局变量GLOBAL,同时控制慢查询日志slow query log和通用日志general log的存储方式,若为FILE则表示会输出到对应的日志文件中,若为TABLE则表示会输出到表mysql.slow_log和mysql.general_log中,若为NONE则表示不输出,可以同时设置成FILE和TABLE
# 查看慢查询日志存储方式
SHOW GLOBAL VARIABLES LIKE '%log_output%';
# 设置慢查询和通用日志输出到对应的日志文件中
SET GLOBAL log_output='FILE,TABLE';
# 设置慢查询和通用日志输出到对应的日志文件和表中
SET GLOBAL log_output='FILE,TABLE';
2.6 查看慢查询记录总数
SHOW GLOBAL STATUS LIKE '%Slow_queries%';
2.7 查看慢查询日志
方法1:在MySQL服务器上直接查看慢查询日志文件
方法2:在MySQL服务器上使用命令行日志分析工具mysqldumpslow
方法3:直接查看mysql.slow_log表(需要select权限)

本文详细介绍了MySQL慢查询日志的配置与优化方法,包括慢查询日志功能、参数设置、存储路径、阈值调整等关键内容,帮助数据库管理员有效定位并优化SQL语句。
1万+

被折叠的 条评论
为什么被折叠?



