Mysql 慢查询日志

MySQL 慢查询日志

MySQL 有一种日志,叫做慢查询日志,主要就是用来记录一些耗时的查询操作。通过这个日志我们就可以分析出哪些的操作是影响性能的,我们需要对其进行一些优化措施。查看开启状态

 

一、慢查询日志相关参数

1、slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。

2、log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

3、slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

4、long_query_time :慢查询时间设置,当查询时间多于设定的时间值时,记录日志。

在 CentOS6.9 下采用 yum 的方式安装的 MySQL5.7 默认没有开启慢查询日志。不管默认有没有给我们开启,我们是需要了解慢查询日志是如何开启的,开启的方式也非常简单。找到 MySQL 的配置文件, Windows 下是 my.ini, Linux 下的是 my.cnf。进行如下配置就可以了。

 

 慢查询日志配置

(1)临时开启 mysql> set global slow_query_log=1;

注意:使用set global slowquerylog=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)

 

(2)永久开启慢查询日志(修改my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器)

[root@master ~]# vim /etc/my.cnf

slow-query-log=1

slow_query_log_file=/var/lib/mysql/master-slow.log

long_query_time=10

第一行是指定开启慢查询日志

第二行是指定慢查询日志的路径

第三行是指定查询时间大于多少的才进行记录,但是是毫秒,也就是操作大于10ms 的操作都会被记录(慢查询时间设置。这个是由参数long_query_time控制,默认情况下long_query_time的值为10秒,可以使用命令修改 set global long_query_time=5;,也可以在my.cnf参数里面修改)

 

慢查询日志

[root@master mysql]# tail -100f /var/lib/mysql/master-slow.log

/usr/sbin/mysqld, Version: 5.7.29-log (MySQL Community Server (GPL)). started with:

Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock

TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
# Time: 2020-03-07T06:35:46.995201Z
# User@Host: root[root] @ localhost [::1] Id: 10
# Query_time: 12.522116 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 483968
use test;
SET timestamp=1499409346;
insert into test (id,name) (select uuid() id,name from test);
# Time: 2020-03-07T06:36:15.258316Z
# User@Host: root[root] @ localhost [::1] Id: 10
# Query_time: 24.543267 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 967936
SET timestamp=1499409375;
insert into test (id,name) (select uuid() id,name from test);
# Time: 2020-03-07T06:37:15.021922Z
# User@Host: root[root] @ localhost [::1] Id: 10
# Query_time: 56.283040 Lock_time: 0.000499 Rows_sent: 0 Rows_examined: 1935872
SET timestamp=1499409435;
insert into test (id,name) (select uuid() id,name from test);
# Time: 2020-3-07T06:40:07.866659Z
# User@Host: root[root] @ localhost [::1] Id: 10
# Query_time: 133.866927 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 3871744
SET timestamp=1499409607;
insert into test (id,name) (select uuid() id,name from test); 

 

我们可以看到在 2020-03-07 日,有多个慢查询产生,单独抽取一组,如下

# Time: 2020-03-07T06:35:46.995201Z

# User@Host: root[root] @ localhost [::1] Id: 10

# Query_time: 12.522116 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 483968

use test;

SET timestamp=1499409346;

insert into test (id,name) (select uuid() id,name from test);

Query_time 表示的是耗时时间

可以看到是一些操作,这的主要操作就是一个 insert,这就是慢查询日志!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值