日期:2014-05-16  浏览次数:20711 次

关于mysql事务死锁的疑问
是这样的,我在程序里关闭了自动提交,然后当两个update语句完成之后,还没有commit
这个时候我拔了我的网线,然后让程序继续运行,然后出错后发现mysql的那句update一直处于等待执行的状态

我想问的是,像这种情况,除了手动杀掉被锁的语句,还有没有其他办法?
这种程序应该是处理不了的吧?那么有没有什么设置可以让mysql过一段时间,比如10秒自动把锁释放呢?

------解决方案--------------------
所以,对于C/S构架来说
1, 尽量让一个transaction足够短, 避免在一个transaction中间有交互动作
2, 程序里要有kill process的模块, 让客户自己解决这问题
3, MYSQL/INNODB里有lock-xxx--timeout参数, 可以设置锁表最多分钟, 超过这个值, 会自动rollback.