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语句被回滚作为一个错误结果,
一些通过语句设置的锁可能被保存。