MySQL 锁
表锁(Table Lock)
描述:锁定整个表,通常用于批量数据操作。表锁会阻止其他会话对该表进行任何读写操作。
示例:LOCK TABLES t1 WRITE;
行锁(Row Lock)
描述:锁定表中的特定行,适用于事务处理。行锁允许不同事务同时锁定同一个表中的不同行。
示例:RECORD LOCKS space id 2969 page no 4 n bits 72 index "PRIMARY" of table "test"."t1" trx id 123456 lock_mode X
间隙锁(Gap Lock)
描述:锁定索引记录之间的间隙,防止在范围内插入新记录。间隙锁主要用于防止幻读现象。
示例:RECORD LOCKS space id 2969 page no 4 n bits 72 index "PRIMARY" of table "test"."t1" trx id 123456 lock_mode X locks gap before rec
临键锁(Next-Key Lock)
描述:结合行锁和间隙锁,锁定一行及其相邻的间隙,以防止幻读。
示例:RECORD LOCKS space id 2969 page no 4 n bits 72 index "PRIMARY" of table "test"."t1" trx id 123456 lock_mode X locks rec but not gap
意向锁(Intention Lock)
描述:表级锁,表示事务有在某些行上设置锁的意图。意向锁用于解决表锁与行锁之间的兼容性问题。
示例:TABLE LOCK table 'test.t1' trx id 123456 lock_mode IX
共享锁(Shared Lock)
描述:允许多个事务同时读取数据,但不允许写入。共享锁适用于只读操作。
示例:RECORD LOCKS space id 2969 page no 4 n bits 72 index "PRIMARY" of table "test"."t1" trx id 123456 lock_mode S
排他锁(Exclusive Lock)
描述:允许单个事务对数据进行读写,防止其他事务访问。排他锁适用于更新操作。
示例:RECORD LOCKS space id 2969 page no 4 n bits 72 index "PRIMARY" of table "test"."t1" trx id 123456 lock_mode X