设置
mysql查询慢怎么办?那就把慢查询语句给找出来。设置很简单:
|
|
打开慢查询日志
|
|
设置慢查询时间
|
|
slow_query_log变量被设置为ON,mysql会立即开始记录。
/etc/my.cnf 里面可以设置上面MYSQL全局变量的初始值。
|
|
使用mysqldumpslow
用mysqldumpslow命令打印慢查询日志:
mysqldumpslow -s c -t 10 /tmp/slow-log
这会输出记录次数最多的10条SQL语句。
-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感;
[root@server00 ~]# mysqldumpslow -s r -t 10 /data/mysql/3306/data/server00-slow.log
Reading mysql slow query log from /data/mysql/3306/data/server00-slow.log
Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=0.0 (0), admin[admin]@[10.0.0.20]
# Thread_id: N Schema: vaneplay Last_errno: N Killed: N
# Query_time: N.N Lock_time: N.N Rows_sent: N Rows_examined: N Rows_affected: N Rows_read: N
# Bytes_sent: N Tmp_tables: N Tmp_disk_tables: N Tmp_table_sizes: N
# InnoDB_trx_id: 8C5EA79
|
|
得到返回记录集最多的10个查询。
[root@server00 ~]# mysqldumpslow -s t -t 10 -g “left join” /data/mysql/3306/data/server00-slow.log
得到按照时间排序的前10条里面含有左连接的查询语句。