如何记录mysql慢查询sql⽇志
修改myf的mysqld部分:
long_query_time = 1              //定义慢查询的时间1表⽰1秒
--log-slow-queries[=file_name]  //记录慢查询到⽇志⽂件
--log-queries-not-using-indexes //将没使⽤索引的sql记录到⽇志⽂件
实例:
[mysqld]
long_query_time = 1
log-slow-queries = /usr/local/mysql5.0.40/var/slow_query.log
log-queries-not-using-indexes = true
"too many connections"不到问题所在,后来发现打开mysql的慢查询会有很⼤的帮助就搞了⼀个.
打开
MySQL慢查询记录⽇志对于跟踪PHP+MySQL体系下的MySQL负载调优问题很有⽤处,⽐如安装了很多Discuz!插件的⽤户,这样可以⼤概排查出那些插件有代码问题。其实启⽤MySQL的慢查询⽇志很简单,只需要在MySQL的配置⽂件⾥添加log-slow-queries和long_query_time 两个参数即可。
Windows下开启MySQL慢查询
MySQL在Windows系统中的配置⽂件⼀般是是my.ini到[mysqld]下⾯加上
log-slow-queries = F:\MySQL\log\mysqlslowquery.log
long_query_time = 2
Linux下
MySQL在Windows系统中的配置⽂件⼀般是是myf到[mysqld]下⾯加上
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
注意
log-slow-queries = F:\MySQL\log\mysqlslowquery.log为查询⽇志存放的位置,⼀般这个⽬录要有MySQL的运⾏帐号的可写权限,⼀般都将这个⽬录设置为MySQL的数据存放⽬录;
long_query_time=2中的2表⽰查询超过两秒才记录;
启⽤ slow log
有两种启⽤⽅式:
1, 在myf ⾥通过 log-slow-queries[=file_name]
2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项
⽐较的五款常⽤⼯具
mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter
mysqldumpslow, mysql官⽅提供的慢查询⽇志分析⼯具. 输出图表如下
主要功能是, 统计不同慢sql的
出现次数(Count),
执⾏最长时间(Time),
累计总耗费时间(Time),
等待锁的时间(Lock),
发送给客户端的⾏总数(Rows),
扫描的⾏总数(Rows),
⽤户以及sql语句本⾝(抽象了⼀下格式, ⽐如 limit 1, 20 ⽤ limit N,N 表⽰).
讲⼀下有⽤的参数:
-s 排序选项:c 查询次数 r 返回记录⾏数 t 查询时间
-t 只显⽰top n条查询
mysqldumpslow -s r -t 10 slow.log
mysqlsla, hackmysql推出的⼀款⽇志分析⼯具(该⽹站还维护了 mysqlreport, mysqlidxchk 等⽐较实⽤的mysql⼯具)
整体来说, 功能⾮常强⼤. 数据报表,⾮常有利于分析慢查询的原因, 包括执⾏频率, 数据量, 查询消耗等.
格式说明如下:
总查询次数 (queries total), 去重后的sql数量 (unique)windows怎么使用mysql
输出报表的内容排序(sorted by)
最重⼤的慢sql统计信息, 包括平均执⾏时间, 等待锁时间, 结果⾏的总数, 扫描的⾏总数.
Count, sql的执⾏次数及占总的slow log数量的百分⽐.
Time, 执⾏时间, 包括总时间, 平均时间, 最⼩, 最⼤时间, 时间占到总慢sql时间的百分⽐.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执⾏时间.
Lock Time, 等待锁的时间.
95% of Lock , 95%的慢sql等待锁时间.
Rows sent, 结果⾏统计数量, 包括平均, 最⼩, 最⼤数量.
Rows examined, 扫描的⾏数量.
Database, 属于哪个数据库
Users, 哪个⽤户,IP, 占到所有⽤户执⾏的sql百分⽐
Query abstract, 抽象后的sql语句
Query sample, sql语句
除了以上的输出, 官⽅还提供了很多定制化参数, 是⼀款不可多得的好⼯具.
mysql-explain-slow-log, 德国⼈写的⼀个perl脚本.
功能上有点瑕疵, 不仅把所有的 slow log 打印到屏幕上, ⽽且统计也只有数量⽽已. 不推荐使⽤.
mysql-log-filter, google code上到的⼀个分析⼯具.提供了 python 和 php 两种可执⾏的脚本.
功能上⽐官⽅的mysqldumpslow, 多了查询时间的统计信息(平均,最⼤, 累计), 其他功能都与 mysqldumpslow类似.
特⾊功能除了统计信息外, 还针对输出内容做了排版和格式化, 保证整体输出的简洁. 喜欢简洁报表的朋友, 推荐使⽤⼀下. myprofi, 纯php写的⼀个开源分析⼯具.项⽬在 sourceforge 上.
功能上, 列出了总的慢查询次数和类型, 去重后的sql语句, 执⾏次数及其占总的slow log数量的百分⽐.
从整体输出样式来看, ⽐mysql-log-filter还要简洁. 省去了很多不必要的内容. 对于只想看sql语句及执⾏次数的⽤户来说, ⽐较推荐.
总结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。