1、慢查询开启
1.1、开启慢查询目的
开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
2.2、设置慢查询
修改my.cnf配置文件,在[mysqld]下方加入:
slow_query_log = ON #慢查询开启
slow_query_log_file = /var/log/slow-query.log # 慢查询日志存放目录
long_query_time = 5 #查询查过5秒才记录
如果是windows系统,配置文件名称为my.ini
,linux系统my.cnf配置文件默认在/etc/my.cnf,也可以使用locate my.cnf
查看所有my.cnf文件的存放目录。
[root@yizhan ~]# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
配置完成后需要重启mysql服务 systemctrl restart mysqld
2.3、查看慢查询状态
登录mysql查看慢查询
#查看慢查询的开启状态和慢查询日志的存储路径
show variables like '%slow%';
#查看当前慢查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)
show variables like '%log_output%';
#查看慢查询阈值,当查询时间多于设定的阈值时,记录日志
show variables like 'long%';
#插入一条数据,数据大于“long_query_time”(6秒)时(不包含6秒),会把日志保存到慢查询日志中
select sleep(6);
#查看慢查询的个数,根据个数是否新增来判断测试结果
show global status like '%Slow_queries%';
2.4、慢查询分析—mysqldumpslow
登录mysql后执行select sleep(6);
,然后使用mysqldumpslow工具(MySQL客户端自带)对慢查询日志进行分类汇总。
# 查看前2条慢查询SQL语句
mysqldumpslow -s c -t 2 /var/log/slow-query.log
- -s 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙
- -t 返回前面多少条数据
输出结果:
[root@yizhan ~]# mysqldumpslow -s c -t 2 /var/log/slow-query.log
Reading mysql slow query log from /var/log/slow-query.log
Count: 3 Time=6.00s (18s) Lock=0.00s (0s) Rows=1.0 (3), root[root]@localhost
select sleep(N)
Died at /usr/bin/mysqldumpslow line 167, <> chunk 3.
[root@yizhan ~]#
Time表示慢查询SQL执行的事件,Lock表示锁,Rows表示有多少条慢查询SQL语句,select sleep(N)是具体的慢查询SQL语句。