14.5.5.2 Deadlock Detection and Rollback Deadlock 检测和回滚 InnoDB 自动检测事务死锁和回滚一个事务 InnoDB 尝试挑选小的事务来回滚,事务的大小是有 rows inserted, updated, or deleted.的数量决定的 InnoDB 知道表锁 如果 innodb_table_locks = 1 (the default) and autocommit = 0, MySQL 层面知道关于行锁 否则,InnoDB 不能检测死锁 一个表的表通过一个LOCK TABLES 语句设置或者通过一个存储引擎设置。 解决那些问题通过设置innodb_lock_wait_timeout 系统变量的值 当InnoDB 执行一个完整的事务回滚,通过事务设置的所有的锁都被释放。 然而,如果只是一个单独的SQL语句被回滚作为一个错误结果, 一些通过语句设置的锁可能被保存。