免费注册 查看新帖 |

Chinaunix

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

怀疑慢查询有问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-22 11:01 |只看该作者 |倒序浏览
我在慢查询里发现了一些语句,然后手动执行,但是时间却0.07秒。

我怀疑被CACHE,于是 flush table;
在执行,但是时间依然0。07秒。

请问这个是为什么? 是慢查询有问题么?
我设置的是2秒慢查询

论坛徽章:
0
2 [报告]
发表于 2012-03-22 11:09 |只看该作者
回复 1# super_ebo
个人觉得有两种可能
1,这个query本身耗时超过2s, 你手动执行时,就你说的一样使用了Cache, 你可以加sql_no_cache来手动执行查询,验证一下。
2,有可能慢查询里的记录的query没有超2s, 你设置了“没有使用索引的查询"都被记录了,查看下面这个变量

show variables like 'log_queries_not_using_indexes';

输出结果是不是ON,

如果是on说明没有使用索引才被记录,

当然你完全可能 直接看slow log , 看他耗时值。

   

论坛徽章:
0
3 [报告]
发表于 2012-03-22 11:21 |只看该作者
RogerZhuo 发表于 2012-03-22 11:09
回复 1# super_ebo
个人觉得有两种可能
1,这个query本身耗时超过2s, 你手动执行时,就你说的一样使用了 ...



对于第一点,我尝试了一下,用sql_no_cache跟没用时间是一样的。

对于第二点,我用的是mysql4。 而且我explain过,显示的是用到了索引。


而且,我的慢查询里的就这句测试语句的时间是16-18秒。但手动执行就0.07秒。
很是费解!

论坛徽章:
0
4 [报告]
发表于 2012-03-22 11:31 |只看该作者
回复 3# super_ebo
这种现象是常常发生,还是只出现一两次?
可以跑一下相同的应用,再查看一下结果
会不会是多个应用sql争用同一资源,造成锁等待?

   

论坛徽章:
0
5 [报告]
发表于 2012-03-22 11:39 |只看该作者
这种情况现在看是经常发生。
看慢查询的日志,语句的lock_time大多为零。
你说的同一资源指哪些?

如果是系统资源的话那不应该。 如果是mysql内部资源的话,我觉得就目前的压力来看还是应该不至于能到16-18秒。
而且类似语句频繁程度也比较高,就是where后面的id号不一样而已。

论坛徽章:
0
6 [报告]
发表于 2012-03-22 11:52 |只看该作者
回复 5# super_ebo
资源所指的是被操作的数据库对象,表这些三。
确实如你所用,这种可能性太小,相差2个数量级,
即使是大事务,lock住了,innodb用的也是mvcc,


没遇到过,搞不明白,等大大来看看吧。



   

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-10-11 06:20:00数据库技术版块每日发帖之星
日期:2015-10-12 06:20:00数据库技术版块每日发帖之星
日期:2015-10-15 06:20:00数据库技术版块每日发帖之星
日期:2015-10-30 06:20:00综合交流区版块每月发帖之星
日期:2015-12-02 14:59:01数据库技术版块每日发帖之星
日期:2015-12-15 06:20:00
7 [报告]
发表于 2012-03-22 12:08 |只看该作者
explain以及slow log的结果发一下

论坛徽章:
0
8 [报告]
发表于 2012-03-28 13:46 |只看该作者
当一个查询运行的时候,还有其他的查询在运行,比如有update,insert等,这些操作的优先级比select要高,那么select首先需要等待,其次还有各种资源的占用在不同的时刻是不同的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP