关于innodb死锁的问题。

目前我们有一款在线的产品。总是会出现死锁,同时郁闷的是目前状态是DBA空缺。。。

目前解决方法:

为了不影响客户使用。我降低了默认的50秒锁等待时间,变成了3秒。
同事创建了一个innodb_monitor。那个20秒记录一次innodb status的状态。





***********************************
************ 问题来了 *************
***********************************



1. 如果得到innodb历史的死锁信息。

show engine innodb status;
貌似只是返回当前死锁的状态。

但是我不知道什么时候他会清除。




2. 我安装了innodb plugin,同事开启了INNODB_TRX, INNODB_LOCKS and INNODB_LOCK_WAITS 

但是我发现这三个表好像也只是当前的数据。

难道就没有一个历史记录吗???




3. 如何更好的查死锁?

因为我们是在线产品。私下测试不会有死锁。
但是在线的话也需要确保用户使用的啊。
所以我没办法在线调试,我只能将这些log收集,然后私下分析。

我看了一些文章,都是一些简单的sql死锁的模拟,但是现在sql语句很多,
也不知道那个死锁。同时我也只能拿到sql的LOG。并没有机器权限。

也就是在不能实时调试的情况下,大家有没有什么好的建议??



















作者: madmanahong   发布时间: 2011-05-12

show engine innodb status有
LATEST DETECTED DEADLOCK

作者: rucypli   发布时间: 2011-05-12

把你的SHOW INNODB STATUS打印出来的信息贴出来看看。

作者: zuoxingyu   发布时间: 2011-05-12