参考网页
0.慢查询日志参数说明
slow_query_log
慢查询开启状态。
slow_query_log_file
慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)。
long_query_time
查询超过多少秒才记录。
说明--mysql中参数查询--使用 show variables 语句
真正查询时可以通过模糊匹配参数。如’slow_query%’。
1.查询mysql中慢查询日志参数
mysql> show variables like 'slow_query%';
+---------------------+------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | E:\mysql-5.7.15-winx64\data\dzn-slow.log |
+---------------------+------------------------------------------+
2 rows in set, 1 warning (0.01 sec)
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set, 1 warning (0.01 sec)
如下图:
1设置mysql慢查询参数方法1--全局变量设置(临时设置方法)
自己实践设置slow_query_log 和 slow_query_log_file--注意win7下slow_query_log_file地址的写法(标黄)
mysql> set global slow_query_log='ON';
Query OK, 0 rows affected (0.01 sec)
mysql> set global slow_query_log_file='E:/mysql-5.7.15-winx64/data/slow.log';
Query OK, 0 rows affected (0.03 sec)
mysql> show variables like 'slow_query%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | E:/mysql-5.7.15-winx64/data/slow.log |
+---------------------+--------------------------------------+
2 rows in set, 1 warning (0.01 sec)
如下图,可见都生效了
自己实践设置long_query_time
发现没有生效???
登出mysql,再次登入,发现还是生效了。不知道为何不能立即显示生效,估计跟mysql自身机制有关。
关闭mysql服务然后重启mysql服务查看参数是否生效--结果发现刚才的设置都失效了
2.2设置mysql慢查询参数方法2--配置文件设置
设置参考
自己实践
先把mysql服务器停了。找到配置文件
修改配置文件,如下图:
slow_query_log = ON
slow_query_log_file = E:/mysql-5.7.15-winx64/data/slow.log
long_query_time = 1
重启mysql服务器,查看参数,发现没有生效,为啥?
为何设置没有生效??????--配置文件错了
停止mysql服务器,将【my-default.ini】文件拷贝一份并改名为【my.ini】,然后再次启动mysql服务器。
此时登录并查询,可见配置文件中的配置参数都生效了,如下图:
而且这种生效是永久的生效,不是暂时的。
2.3两种设置方法的不同
2.1的设置方法是暂时的,重启mysql服务器后配置就失效了。2.2在配置文件my.ini中进行配置是永久的,不会因mysql服务器的重启而失效。
my.ini是mysql服务器的配置文件,my-default.ini不是。没有my.ini的情况下估计mysql就以自己系统中默认的配置参数为准的,而非读取的my-default.ini中的参数
测试慢查询日志
执行一条慢查询SQL语句(执行了两遍 select sleep(2);语句)
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.01 sec)
查看是否生成慢查询日志
由于慢查询的时间修改为了1s,select sleep(2);这句sql语句要执行最少2s,打开日志查看,可以看到慢查询日志中多了两条记录。
★mysql服务器慢查询配置方案
采用【2.2设置mysql慢查询参数方法2--配置文件设置】的方案进行配置
停止msql服务
修改mysql服务器的配置文件my.ini
配置文件内容,如图
slow_query_log=ON
slow_query_log_file=E:/mysql-5.7.15-winx64/data/slow.log
long_query_time=1
重启mysql服务,慢查询日志生效
引申的问题--慢查询日志现在就一个,如果过大怎么办?
参考
说明--并未做试验
思路很简单,就是按日期(按日或者按月)或者按照不同库进行切割。考虑到服务器端的存储空间还可以用脚本对日志定期处理。
慢查询日志就是用来手动或者自动化分析出来慢查询语句然后优化系统用的。