情况描述:

最近在分析服务器的slow-log和bin-log的时候,发现这两个log中有某些语句的execute time 极大例如:4294967295。
log信息:#091008 21:40:04 server id 1  end_log_pos 3440531       Query   thread_id=63169 exec_time=4294967295    error_code=0
而出现这种极长执行时间的语句却不固定,最终通过以下的分析过程,找到了这个问题出现的原因

updated at 2012-05-14: chinaunix 上也有网友表示遇到过这样的情况: 链接

第一步:确认相关语句没有问题

使用以下语句,过滤出执行时间极大SQL语句(maatkit的digest工具,按照执行时间排序)
mysqlbinlog binlog.xxxxxxx |mk-query-digest –type binlog –nofor-explain
在测试机上执行筛选的语句,并没有发现有任何的性能异常

第二步:确实是否是死锁导致的语句长时间hang

分析:如果出现能hang这么长时间的语句,必定会对服务器的性能产生巨大影响。而日常运行过程中,mysql并没有任何异常,更没有死锁的发生。况且死锁的语句的等待超过timeout时,会被自动kill;而timeout不可能有如此大的值。
至此排除这语句本身存在的问题。

第三步: 再一次回到原点,寻找问题规律

通过对所有具有极大execute time的log记录的分析,有了重大发现! 所有execute time的值都为 4294967295 或者4294967296 。 这不就是 232 -1 的值吗?! 4个字节变量的最大值。

第四步:大胆猜想

execute time的计算应该等于 stop_timestamp – start_timestamp ,如果stop小于start 则为负数,而execute time应该是一个unsigned long 的变量,因此把 -1变成了 4294967295 。

过程解析:

t100 : 语句开始运行
t101 : 时间开始同步,并把系统时间设置为 99
t102:语句运行结束, 计算语句执行时间, 99 - 100 = -1 ,又由于 query-time 是unsigned int 因此 -1 = 4294967295

第五步:找到合理的解释

原来服务器每隔一段时间会运行脚本去某个时间服务器同步时间。如果同步之前某个时刻(T)语句正巧触发,而在执行过程中,脚本把服务器时间设置为了 T-1 ,那么在语句执行完进行时间结算时,就会得到语句执行了-1秒的结论。通过unsigned的转后就变成了 4294967295这个恐怖的值了。

慢查询日志中出现超大时间的案例分析相关推荐

  1. mysql rows examined_MySQL源码学习:关于慢查询日志中的Rows_examined=0

    最近在一个项目中DBA同学问了一个问题:为什么很多慢查询日志中显示 Rows_examined : 0? 需要说明的是, 这类慢查询语句都是类似 select count(*) from (-)t; ...

  2. 请求方报超时,服务日志中记录的时间却少有超时

    请求方报超时的比例大概有4% 他们设置的超时时间是500ms 但是我们统计日志,服务时间超过500ms的日志很少 原因是什么呢? 超时原因分析: 1.请求内容太长 根据请求方超时日志, 大多数quer ...

  3. linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...

    这篇文章主要介绍了Shell脚本实现apache日志中的状态码分析,本文先是介绍了按天切割日志的方法,然后给出了分析访问状态码的脚本,需要的朋友可以参考下 一.首先将apache日志按天切割 复制代码 ...

  4. JS中~偏移量设定方式与案例分析

    1.history对象方法 分析:实现从主页跳转过来以后就会自动生成一个p标签并改写内容,利用location对象修改herf方法值,实现不用标签跳转. 问题:对于添加创建的元素使用方法遗忘,appe ...

  5. mysql时间模糊查询_mysql中那些根据时间查询的sql语句

    在我们使用mysql是免不了要根据时间去查询一些数据,这个时候一般有几种方式可以去查询. 第一种数据库,如果有数据新建时间可以以这个时间为节点,通过当前时间条件去比较时间来查询到此段时间内的数据 例如 ...

  6. 数据库-优化-从慢查询日志中分析索引使用情况及pt-find

    8.查找数据库表中重复的索引 pt-duplicate-key-checker --host=localhost --user=root --password=123456 9.查看mysql表和文件 ...

  7. MySQL查询语句中的IN 和Exists 对比分析

    背景介绍 最近在写SQL语句时,对选择IN 还是Exists 犹豫不决,于是把两种方法的SQL都写出来对比一下执行效率,发现IN的查询效率比Exists高了很多,于是想当然的认为IN的效率比Exist ...

  8. 【力荐】Select查询语句中LIKE关键词的优化方法分析

    今天接到一个优化需求,跑个程序要12+个小时,周期是每天一次,所以时效性极差,不能响应快速的实际业务需求,下面我们看一段LIKE的优化方法. SELECT     bukrs werks lgort ...

  9. 名企中无领导小组经典案例分析

    [size=large][b]一.无领导小组面试概况 [/b] 在这种形式中,应试者划分成每组人数四到八人不等,不指定负责人,大家地位平等,要求就某些争议性比较大的问题,例如干部提拔.工作任务分配.额 ...

最新文章

  1. VS2017缺少头文件的解决办法
  2. ubuntu 12.04.1升级至ubuntu 12.10出现gcc-4.7依赖库错误的解决办法
  3. mysql添加枚举约束语句_mysql8 参考手册--MySQL如何处理约束
  4. 【渝粤题库】陕西师范大学165107工作分析与设计作业(高起专)
  5. 单词方阵(洛谷-P1101)
  6. Grand Central Dispatch(GCD)
  7. 互联网+商业 济宁苏宁生活广场打造智慧城市范本
  8. 将数字转化成拥有X小数位的形式
  9. Libevent 源码文件结构分析
  10. js实现的单机双人象棋演示及其分析
  11. Xcopy 复制文件和目录,包括子目录。
  12. Silverlight新型的富媒体
  13. 指纹识别技术相比于其它生物识别技术,有哪些优缺点?
  14. 修改oracle用户密码永不过期的方法
  15. Thread多线程-(最容易被问到的面试题)
  16. 拓嘉辰丰电商:拼多多推广主要有哪些模式
  17. 图像分割之分水岭分割算法
  18. 网页禁用crtl +s按钮和禁用右键
  19. java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...
  20. 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection

热门文章

  1. 【MongoDB】Sharding分片概念及原理
  2. P2085 最小函数值 堆
  3. codeforces 739E - Gosha is hunting
  4. 1.15 Python基础知识 - 函数
  5. wamp httpd-vhosts.conf
  6. iOS之NSAttributedString-------字符属性
  7. 畅通工程,How Many Tables ACM第九天-图论
  8. JavaScript 变量、函数与原型链
  9. SharePoint配置和自定义Content Query Web Part
  10. 构建通用类型- 继承 VS 聚合