MYSQL的慢查询分析
1、日志记录(slow.log)
long_query_time是用来定义慢于多少秒的才算慢查询
mysql> show variables like 'long%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec)
long_query_time定义慢查询的时间阀值
mysql> set long_query_time=1; Query OK, 0 rows affected (0.00 sec)
慢查询相关变量说明
mysql> show variables like 'slow%'; +---------------------+---------------+ | Variable_name | Value | +---------------------+---------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /tmp/slow.log | +---------------------+---------------+ 3 rows in set (0.00 sec)
设置记录开关
//打开日志
mysql> set global slow_query_log='ON'
//未使用索引的查询也作记录
mysql> set global log_queries_not_using_indexes='ON';
2、mysqldumpslow命令
mysqldumpslow -s c -t 10 /tmp/slow-log -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙; -t, 是top n的意思,即为返回前面多少条的数据; -g, 后边可以写一个正则匹配模式,大小写不敏感的;
mysqldumpslow -s r -t 10 /tmp/slow-log 得到返回记录集最多的10个查询。
mysqldumpslow -s t -t 10 -g “left join” /tmp/slow-log 得到按照时间排序的前10条里面含有左连接的查询语句
备注:
查找mysql错误日志
show variables like '%log_error%';
show variables like 'log_%'