免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6052 | 回复: 3
打印 上一主题 下一主题

mysql慢查询日志无效 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-17 13:13 |只看该作者 |倒序浏览
近段时间,网站偶尔会卡,top查看发现mysql CPU占用率高,估计是部分SQL语句有问题,所以想优化。

查询了资料,发现mysql可以在日志里记录慢查询,所以修改my.cnf文件

    log_slow_queries = /usr/local/mysql/var/slow_queries.log   #慢查询日志路径
    long_query_time = 10                                       #记录SQL查询超过10s的语句
    log-queries-not-using-indexes = 1                          #记录没有使用索引的sql

启程mysql后, 发现确实产生了日志文件slow_queries.log,但打开后却是:

SET timestamp=1381986711;
select count(pid) as c from lr_ordersession where oid='240171381986710';
# User@Host: mengtor[mengtor] @ localhost []
# Query_time: 0.000130  Lock_time: 0.000024 Rows_sent: 0  Rows_examined: 59
SET timestamp=1381986711;
select * from lr_productspic where pid=4586 order by pcid desc;
# User@Host: mengtor[mengtor] @ localhost []
# Query_time: 0.001333  Lock_time: 0.000357 Rows_sent: 10  Rows_examined: 91
SET timestamp=1381986711;
select pid,productpic,productstitle,newicon,cid,availability,oneprice from lr_products where cid in(0,......

就是说将所有的sql语句都记录了, long_query_time这个参数无效。

请大家帮忙看看,非常感谢!



PS:系统配置
ubuntu:1210
PHP:5.3.2-1
mysql: 5.1.41-3

论坛徽章:
0
2 [报告]
发表于 2013-10-17 16:52 |只看该作者
http://docs.oracle.com/cd/E17952 ... var_long_query_time
For logging to a file, times are written including the microseconds part.

写的日志里面的是微秒
1秒(s) = 1000 毫秒(ms) = 1,000,000 微秒(μs)

论坛徽章:
0
3 [报告]
发表于 2013-10-19 20:26 |只看该作者
回复 2# a.a

多谢回复,我将这个时间值改为500后(即0.5秒),日志果然少了,现在日志结果为:(敏感信息以*代替)

/usr/sbin/mysqld, Version: 5.1.41-3ubuntu12.10-log ((Ubuntu)). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
# Time: 131017 23:03:20
# User@Host: admin_zjm[admin_zjm] @  [*****]
# Query_time: 18446744073709.546875  Lock_time: 0.000099 Rows_sent: 0  Rows_examined: 3712
use *****;
SET timestamp=1382065400;
SELECT productstitle FROM lr_zjm_out AS a LEFT JOIN lr_zjm_out_detail AS b ON a.out_id = b.out_id LEFT JOIN lr_products ON goods_id = pid WHERE rec_time = '0' AND add1_time > 0 AND productstitle LIKE '******%' AND platform LIKE '***.com';

那现在如何查看这段SQL究竟执行了多长时间?原来我设10的时候,Query_time可能为30.83241,很好理解,但现在这个数值?真的不明白。

论坛徽章:
1
未羊
日期:2013-10-18 11:47:51
4 [报告]
发表于 2013-10-19 21:13 |只看该作者
meditatorzhang 发表于 2013-10-19 20:26
回复 2# a.a

多谢回复,我将这个时间值改为500后(即0.5秒),日志果然少了,现在日志结果为:(敏感信 ...



用mysqldumpslow看吧,自己打开来看真心蛋疼啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP