锁范例
行级锁
锁形式只要LOCK_S 和LOCK_X,其他的 FLAG 用于锁的形貌,如前述 LOCK_GAP、LOCK_REC_NOT_GAP 以及 LOCK_ORDINARY、LOCK_INSERT_INTENTION 四种形貌。(相干引荐:MySQL教程)
LOCK_REC_NOT_GAP
LOCK_GAP
LOCK_ORDINARY(Next-Key Lock)
LOCK_INSERT_INTENTION
static const byte lock_compatibility_matrix[5][5] = { /** IS IX S X AI / / IS / { TRUE, TRUE, TRUE, FALSE, TRUE}, / IX / { TRUE, TRUE, FALSE, FALSE, TRUE}, / S / { TRUE, FALSE, TRUE, FALSE, FALSE}, / X / { FALSE, FALSE, FALSE, FALSE, FALSE}, / AI / { TRUE, TRUE, FALSE, FALSE, FALSE} };
关于GAP范例(锁对象建立在supremum上或许要求的锁范例为LOCK_GAP)且要求的不是插进去意向锁时,无需守候任何锁,这是由于差别Session关于雷同GAP能够要求差别范例的锁,而GAP锁自身设想为不互相争执;
LOCK_ORDINARY 或许LOCK_REC_NOT_GAP范例的锁对象,无需守候LOCK_GAP范例的锁;
LOCK_GAP范例的锁无需守候LOCK_REC_NOT_GAP范例的锁对象;
任何锁要求都无需守候插进去意向锁。
表级锁
InnoDB的表级别锁包括五种锁形式:LOCK_IS、LOCK_IX、LOCK_X、LOCK_S以及LOCK_AUTO_INC锁,锁之间的相容性遵照数组lock_compatibility_matrix中的定义。
InnoDB表级锁的目标是为了防备DDL和DML的并发题目。但从5.5版本最先引入MDL锁后,InnoDB层的表级锁的意义就没那么大了,MDL锁自身已覆盖了其大部分功用。
意向锁是表级别的,IS和IX锁之间互相并不争执,但与表级S/X锁争执。
在对纪录加S锁或许X锁时,必需保证其在雷同的表上有对应的意向锁或许锁强度更高的表级锁。
以上就是Mysql-InnoDB锁的相干内容引见的细致内容,更多请关注ki4网别的相干文章!