mysql慢日志是什么?

慢查询日志由 long_query_time 执行时间超过几秒钟并且至少 `min_examined_row_limit` 需要检查行的 SQL 语句组成 。慢查询日志可用于查找需要很长时间执行的查询,因此可以进行优化。但是,检查长而缓慢的查询日志可能是一项耗时的任务。

mysql long_query_time: 默认值是 10 秒


查看/操作慢日志

登录mysql终端查看慢日志是否开启:show variables like '%quer%'; 默认是关闭状态。

在这里插入图片描述

开始慢日志有两种返方式。( 我们用第二种演示 )

  • 可以直接修改 my.cnf 文件,永久有效;
  • 终端执行此命令: set global slow_query_log=1; MySQL重启后则会失效;

在这里插入图片描述

这边你也可以自定义慢日志文件地址:set global slow_query_log_file='路径名'; 来设置你的慢查询日志想要存放的地址,我一般都使用默认的地址;


开启慢日志,什么样的 SQL 语句会被记录到日志中全部取决于 long_query_time ,默认时间是 10 秒。
show variables like 'long_query_time';

在这里插入图片描述


我们也可以去修改这个时间 ,设置阀值:set global long_query_time = 5;
set global long_query_time = 5;

在这里插入图片描述


我们可以发现修改后没有改变,这是为什么?是因为使用命令行操作的需要:断开当前会话窗口重新连接mysql, 再查看就好了!

在这里插入图片描述


最后可以用终端方式查看慢查询记录,可以使用系统变量 show global status like '%slow_queries%';

在这里插入图片描述


然后去看慢日志文件具体数据,就OK了:vim /usr/local/var/mysql/SuperBoss-slow.log ( 我的慢日志文件路径 !)

在这里插入图片描述

mysql有一个命令解析binglog:

mysqlbinlog --base64-output=decode-rows --stop-datetime="2022-02-21 13:32:00" --stop-datetime="2022-02-21 13:32:50" -vv /Users/ming/Desktop/mysql-bin.002260 > /Users/ming/Desktop/11111.sql

mysqlbinlog

–base64-output=decode-rows

–stop-datetime=”2022-02-21 13:32:00”

–stop-datetime=”2022-02-21 13:32:50”

-vv

/Users/ming/Desktop/mysql-bin.002260 > /Users/ming/Desktop/11111.sql