关于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。并没有机器权限。
也就是在不能实时调试的情况下,大家有没有什么好的建议??
目前解决方法:
为了不影响客户使用。我降低了默认的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
LATEST DETECTED DEADLOCK
作者: rucypli 发布时间: 2011-05-12
把你的SHOW INNODB STATUS打印出来的信息贴出来看看。
作者: zuoxingyu 发布时间: 2011-05-12