mysql慢查询我们会使用官方的mysqldumpslow命令来分析,下面我来介绍mysql慢查询配置,分析,日志等等具体实现方法详解.
mysql服务器有一项功能,可以检测到哪条sql语句查询得比较慢,就是慢查询slowlog,现在介绍如何开启。
在[mysqld]下面增加如下代码:
- long_query_time = 1
- log-slow-queries = /usr/local/mysql/data/slow.log
- log-queries-not-using-indexes --phpfensi.com
- long_query_time = 1 #定义超过1秒的查询计数到变量Slow_queries。
- log-slow-queries = /usr/local/mysql/data/slow.log #定义慢查询日志路径。
- log-queries-not-using-indexes #未使用索引的查询也被记录到慢查询日志中(可选)。
mysql自带了一个查看慢日志的工具mysqldumpslow,执行mysqldumpslow –h可以查看帮助信息.
主要介绍两个参数-s和-t
- -s 这个是排序参数,可选的有:
- al: 平均锁定时间
- ar: 平均返回记录数
- at: 平均查询时间
- c: 计数
- l: 锁定时间
- r: 返回记录
- t: 查询时间
- -t n 显示头n条记录。
MySQL慢查询分析mysqldumpslow
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10条SQL语句,其中:
•-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
•-t, 是top n的意思,即为返回前面多少条的数据;
•-g, 后边可以写一个正则匹配模式,大小写不敏感的;
比如:/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询.
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
MySQL的慢查询记录/日志
Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
log-slow-queries = F:MySQLlogmysqlslowquery.log
long_query_time = 2
Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
注意:log-slow-queries = F:MySQLlogmysqlslowquery.log为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;
2009年09月24日更新
在my.cnf或者my.ini中添加log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。比如:
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
log-queries-not-using-indexes |