根据以下文档链接:
发生锁定等待超时时,不执行当前语句。当前事务未回滚。 (在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之前的默认行为,我猜这是处理这种情况的正确方法。有没有人认为这应该是默认行为,不应该要求用户为理所当然的功能添加参数?
答案 0 :(得分:2)
它不会影响参照完整性 - 它只是让您有机会重试,或者执行其他目标,例如到目前为止完成的提交工作,或者回滚。
对于小型事务,为简单起见,您还可以打开rollback-on-timeout选项。但是,如果您正在运行多个小时的事务,您可能会感谢有机会对超时做出反应。