MySQL表锁和Next-Key lock的行锁有什么区别?
简单地说,表锁将锁定整个表记录,而行锁只锁定单个记录。但是在innodb的行锁有树算法,Next-Key lock将锁定记录本身和每条记录之间的记录。在我看来,这与表锁没有什么区别。
两种锁之间有什么区别吗,经过我的测试,innodb行锁默认算法是Next-Key lock,有任何配置可以指定行锁的算法吗?
InnoDB很少做"表锁"这样的事情。主要的例外与DDL语句(ALTER
,DROP TABLE
等)有关
InnoDB喜欢锁定单个行。它甚至可以锁定表中的所有行,从而具有表锁的效果。
它还可以执行"gap lock";为了防止其他连接,例如,在两个相邻的现有键之间插入带有键的行。