MySQL之慢查询日志使用入门教程

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

前言

  • 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_logmysql.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_logmysql.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权限)


End~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值