很多时候我们被都些效率低下sql困扰着,特别是网站大了,sql语句多了却无从查起,mysql提供了不错的参考方法,慢查询日志。
简单的配置几个参数即可,在linux修改my.cnf或者windows修改my.ini
slow_query_log=1//启动慢查询 5.1.29开始用slow_query_log 来启动,可以写配置也可以命令行启动
log-output=FILE //保存类型
long-query-time//查询多久才算是慢呢?按秒计算 自己根据网站实际情况设置!
slow_query_log_file//这个一看就知道是日志的路径
log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。
[mysqld]
slow_query_log=1
log-output=FILE
slow_query_log_file=/var/lib/mysql/mysql_slow.log
long-query-time=2
log-queries-not-using-indexes
重启MySQL Service 站长教学网 eduyo.com
连接上MySQL,查看是否开启slow_query_log
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name
+---------------------+-----------------------------------+
| slow_query_log
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
如果没有打开,请开启slow_query_log
mysql> set @@global.slow_query_log = on;
再次检查是否开启成功
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name
+---------------------+-----------------------------------+
| slow_query_log
| slow_query_log_file | /var/lib/mysql/mysql_slow.log |
+---------------------+-----------------------------------+
9.检查当前/var/lib/mysql目录下是否存在mysql_slow.log(现在已经存在该文件)
从日志中,可以发现查询时间超过2 秒的SQL,而小于2秒的没有出现在此日志中 eduyo.com
根据日志记录sql,就能非常方便检查哪些语句效率低了。
2. -t,是top n的意思,想想limit n 的意思就知道了
-g,后边可以写一个正则匹配模式,大小写不敏感
mysqldumpslow -s r -t 10 localhost-slow.log