如在月报MySQL · 引擎特性 · Innodb 锁子系统浅析所述,在InnoDB内部用uint32类型数据表示锁的类型, 最低的 4 个 bit 表示 lock_mode, 5-8 bit 表示 lock_type(目前只用了 5 和 6 位,大小为 16 和 32 ,表示 LOCK_TABLE 和 LOCK_REC), 剩下的高位 bit 表示行锁的类型record_lock_type。下面会结合...
3、Next-Key Lock(前开后闭区间,后闭的那条记录即记录锁) Next-Key Lock 称为临键锁,是Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。 假设,表中有一个范围 id 为(3,5] 的 next-key lock,那么其他事务即不能插入 id = 4 记录,也不能修改和删除 id = 5 这条记录。 虽然相同范...
LOCK_TYPE: RECORD LOCK_MODE: X LOCK_STATUS: GRANTED LOCK_DATA: 'LUX', 2452 *** 3. row *** ENGINE: INNODB ENGINE_LOCK_ID: 139740117241856:6:23:104:139740049389880 ENGINE_TRANSACTION_ID: 38181 THREAD_ID: 49 EVENT_ID: 130 OBJECT_SCHEMA: world OBJECT_NAME: city PARTITION_NAME: NULL SUBP...
行锁(Record Lock):锁定单个行记录的锁,防止其他事务对此行进行update和delete。在RC、RR隔离级别下都支持 间隙锁(Gap Lock):锁定索引记录间隙(不含该记录),左右开区间,确保索引记录间隙不变,防止其他事务在这个间隙进行insert,产生幻读。在RR隔离级别下都支持 临键锁(Next-Key Lock):行锁和间隙锁组合,同时锁住...
Record Lock (行锁) 简单说就是单个行记录上加锁,防止事务间修改或删除数据。Record Lock总是会去锁住索引记录,如果表建立的时候没有设置任何一个索引,InnoDB存储引擎会使用隐式的主键来进行锁定。 Gap Lock(间隙锁) 间隙锁,表示只锁住一段范围,不锁记录本身,通常表示两个索引记录之间,或者索引上的第一条记录之...
lock_data: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 mysql>SELECT*FROMinformation_schema.INNODB_LOCKS\G;***1.row***lock_id:7311F4:96:3:2lock_trx_id:7311F4lock_mode:Slock_type:RECORDlock_type:'mytest'.'parent'lock_index:'PRIMARY'lock_space:96lock_page:3lock_rec:2lock_data...
意向锁(Intention lock),意向锁又分为意向共享锁(intention shared lock,IS):事务有意向对表中的某些行加共享锁(S锁),意向排他锁(intention exclusive lock,IX):事务有意向对表中的某些行加排他锁(X锁)。 3.1.1.1表读锁(共享锁-S锁)及表写锁(排他锁-X锁) ...
Next-Key Lock 称为临键锁,是 Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。 假设,表中有一个范围 id 为(3,5] 的 next-key lock,那么其他事务即不能插入 id = 4 记录,也不能修改和删除 id = 5 这条记录。 所以,next-key lock 即能保护该记录,又能阻止其他事务将新记录插入到...
这里我们重点关注行级锁,图中 LOCK_TYPE 中的 RECORD 表示行级锁,而不是记录锁的意思。 通过LOCK_MODE 可以确认是 next-key 锁,还是间隙锁,还是记录锁: 如果LOCK_MODE 为 X,说明是 next-key 锁; 如果LOCK_MODE 为 X, REC_NOT_GAP,说明是记录锁; 如果LOCK_MODE 为 X, GAP,说明是间隙锁; 因此,此时...