慢查询日志中出现超大时间的案例分析
情况描述:
最近在分析服务器的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这个恐怖的值了。
慢查询日志中出现超大时间的案例分析相关推荐
- mysql rows examined_MySQL源码学习:关于慢查询日志中的Rows_examined=0
最近在一个项目中DBA同学问了一个问题:为什么很多慢查询日志中显示 Rows_examined : 0? 需要说明的是, 这类慢查询语句都是类似 select count(*) from (-)t; ...
- 请求方报超时,服务日志中记录的时间却少有超时
请求方报超时的比例大概有4% 他们设置的超时时间是500ms 但是我们统计日志,服务时间超过500ms的日志很少 原因是什么呢? 超时原因分析: 1.请求内容太长 根据请求方超时日志, 大多数quer ...
- linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...
这篇文章主要介绍了Shell脚本实现apache日志中的状态码分析,本文先是介绍了按天切割日志的方法,然后给出了分析访问状态码的脚本,需要的朋友可以参考下 一.首先将apache日志按天切割 复制代码 ...
- JS中~偏移量设定方式与案例分析
1.history对象方法 分析:实现从主页跳转过来以后就会自动生成一个p标签并改写内容,利用location对象修改herf方法值,实现不用标签跳转. 问题:对于添加创建的元素使用方法遗忘,appe ...
- mysql时间模糊查询_mysql中那些根据时间查询的sql语句
在我们使用mysql是免不了要根据时间去查询一些数据,这个时候一般有几种方式可以去查询. 第一种数据库,如果有数据新建时间可以以这个时间为节点,通过当前时间条件去比较时间来查询到此段时间内的数据 例如 ...
- 数据库-优化-从慢查询日志中分析索引使用情况及pt-find
8.查找数据库表中重复的索引 pt-duplicate-key-checker --host=localhost --user=root --password=123456 9.查看mysql表和文件 ...
- MySQL查询语句中的IN 和Exists 对比分析
背景介绍 最近在写SQL语句时,对选择IN 还是Exists 犹豫不决,于是把两种方法的SQL都写出来对比一下执行效率,发现IN的查询效率比Exists高了很多,于是想当然的认为IN的效率比Exist ...
- 【力荐】Select查询语句中LIKE关键词的优化方法分析
今天接到一个优化需求,跑个程序要12+个小时,周期是每天一次,所以时效性极差,不能响应快速的实际业务需求,下面我们看一段LIKE的优化方法. SELECT bukrs werks lgort ...
- 名企中无领导小组经典案例分析
[size=large][b]一.无领导小组面试概况 [/b] 在这种形式中,应试者划分成每组人数四到八人不等,不指定负责人,大家地位平等,要求就某些争议性比较大的问题,例如干部提拔.工作任务分配.额 ...
最新文章
- VS2017缺少头文件的解决办法
- ubuntu 12.04.1升级至ubuntu 12.10出现gcc-4.7依赖库错误的解决办法
- mysql添加枚举约束语句_mysql8 参考手册--MySQL如何处理约束
- 【渝粤题库】陕西师范大学165107工作分析与设计作业(高起专)
- 单词方阵(洛谷-P1101)
- Grand Central Dispatch(GCD)
- 互联网+商业 济宁苏宁生活广场打造智慧城市范本
- 将数字转化成拥有X小数位的形式
- Libevent 源码文件结构分析
- js实现的单机双人象棋演示及其分析
- Xcopy 复制文件和目录,包括子目录。
- Silverlight新型的富媒体
- 指纹识别技术相比于其它生物识别技术,有哪些优缺点?
- 修改oracle用户密码永不过期的方法
- Thread多线程-(最容易被问到的面试题)
- 拓嘉辰丰电商:拼多多推广主要有哪些模式
- 图像分割之分水岭分割算法
- 网页禁用crtl +s按钮和禁用右键
- java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...
- 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection