innodb锁等待超时

时间:2010-03-08 10:51:19

标签: mysql timeout innodb

根据以下文档链接:

发生锁定等待超时时,不执行当前语句。当前事务未回滚。 (在MySQL 5.0.13之前,如果发生锁定等待超时,InnoDB会回滚整个事务。您可以通过使用--innodb_rollback_on_timeout选项启动服务器来恢复此行为,从MySQL 5.0.32开始提供。

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout

这是否意味着当发生锁等待超时时,它会影响事务完整性? “roollback on timeout”是5.0.13之前的默认行为,我猜这是处理这种情况的正确方法。有没有人认为这应该是默认行为,不应该要求用户为理所当然的功能添加参数?

1 个答案:

答案 0 :(得分:2)

它不会影响参照完整性 - 它只是让您有机会重试,或者执行其他目标,例如到目前为止完成的提交工作,或者回滚。

对于小型事务,为简单起见,您还可以打开rollback-on-timeout选项。但是,如果您正在运行多个小时的事务,您可能会感谢有机会对超时做出反应。