有什么好的方法捕获由于超时而失败的SQL

[复制链接]
查看11 | 回复1 | 2015-3-4 14:52:11 | 显示全部楼层 |阅读模式
最近遇到一个现网问题,一个带自增ID的表总是在凌晨3点到4点左右间歇性的出现insert失败
表t的结构如下:
t(id int auto_increment,c1 int,c2,int,c3 int,primary key (id))
是很简单的insert形式:
insert into table t(c1,c2,c3) values(v1,v2,v3)
发现应用程序写入失败的日志报错为:lock wait timeout exceeded,try to restart transaction
由于除了主键之外,该表没有其他任何唯一索引,上面的插入失败说明,该表是全表被锁,不然不可能出现简单的插入失败,或者是自增锁被锁定,导致无法分配下一个有效的自增id值
由于很多DB都有这种情况,而且都是间歇性的出现,现在想把导致这些锁等待超时的SQL捕获下来,看看到底是什么原因导致这种情况,请问有什么好的方法可以捕获到导致锁等待超时的语句?
3点会有全备,但是确定不会锁定任何表,因为使用的是--skip-lock--tables选项
自增锁模式设置为:
innodb_autoinc_lock_mode=1

回复

使用道具 举报

千问 | 2015-3-4 14:52:11 | 显示全部楼层
任务计划,定时show processlist
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行