mysql慢查询日志

一、慢查询日志概念

  MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句。具体怎么玩我们先看下面的演示。

二、慢查询日志配置

默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的。我们应该使用 **show variables like ‘%slow_query_log%’;**来查看其状态。如下:
在这里插入图片描述
第一个参数slow_query_log 表示我们的 慢查询日志没有开启(默认)。
第二个参数表示这我们慢查询日志的文件在那个文件夹中。这个名字请忽略这是默认创建的。如果想要永久开启慢查询指定慢查询日志的位置和名称,可以在/etc/my.cnf下配置。

三、打开慢日志查询

使用命令 set global slow_query_log=1;
在这里插入图片描述
这样就开启成功了。在这之前我们要先知道慢查询日志默认的阙值(通俗的讲就是大概要多长时间,才算慢,当然这个值我们可以自己设置。)

使用命令 show variables like ‘long_query_time’;

在这里插入图片描述
在这里我以前设置过,你如果第一次查看应该是十秒。不过我们可以自己设置通过命令。

使用命令 set global long_query_time=4;
在这里插入图片描述
这里一查看唉?怎么还是三,注意我们设置成功了已经,但是要用另一个语句去查询。来看

在这里插入图片描述
使用命令 show global variables like ‘%long_query_time%’;便可以看到我们已经修改成功了。

OK既然这样我们来测试这个慢查询怎么被记录的吧。
使用命令select sleep(5);这个意思是等五秒后查询。正好比我们的设置阙值多1秒会被记录。
一开始:
在这里插入图片描述
这里会等待五秒
之后:
在这里插入图片描述
还记得上文中那个slow_query_log_file那个参数吗。慢sql语句就被保存在那个文件里我们去查看一下。
输入一下两行命令。一是到那个目录,二是查看。
在这里插入图片描述
之后我们会看到,仔细看一下是不是看到了我们刚刚写的语句select sleep(5);说明记录成功了。包括timestamp睡了多长时间(毫秒值)。就此我们可以根据查询语句添加索引之列的优化查询语句。索引后面我会更新一期。
在这里插入图片描述
到这里我们玩的其实也差不多了,还有一条你可以查看具体有几条慢sql语句被记录了使用show global status like ‘%slow_queries%’;
在这里插入图片描述
因为之前测试过所以有记录。

日志分析工具mysqldumpslow

在实际生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow

查看mysqldumpslow的帮助信息:
在这里插入图片描述
注意这是在linux命令行中输出,别在mysql上输入。(别问我怎么知道的哈哈。)
在这里插入图片描述
常用的就这些,具体可以看刚刚命令给出的英文,不会的去翻译。

给大家看几个范例:
得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /。。。(这里是你慢查询日志的路径每个人的位置可能不一样。)
在这里插入图片描述
就是这个图片的路径slow_query_log_file。
在这里插入图片描述
我们现在利用配置文件来永久开启慢日志(工作中大家别乱动,小心被dba叫过去喝茶!!!)

第一我们一开始没有在配置文件中配置,所以我们重启一下mysql再查看一下状态。
(1)利用ps -ef |grep mysql查看一下mysql的进程
在这里插入图片描述
(2)我用的是Centos7重启命令是systemctl restart mysql.service
在这里插入图片描述
Centos6是service mysqld restart

(3)在重启过后,我们再查看一下。
在这里插入图片描述
默认关闭了。好了我们现在来配置/etc/my.cnf文件吧

**

**
这里给大家拓展一下,想看的看不想看的可以跳过。利用which mysql可以查看mysql所在的目录例如:
在这里插入图片描述
同理其他的软件也是一样的。
然后
通过mysql --verbose --help|grep -A 1 ‘Default options’ 可以查看其默认配置文件的路径:
在这里插入图片描述

好了我们现在来配置/etc/my.cnf文件吧
在这里插入图片描述
原来文件是这样的 。添加
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1
在这里插入图片描述
添加完以后是这样的。
然后重启mysql服务器。
在这里插入图片描述
然后重新进入mysql。
在这里插入图片描述
这时候我们看到默认开启了,并且慢查询日志的目录是我们设置的那个了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值