mysql行级锁有哪些
时间: 2023-10-20 21:29:12 浏览: 90
MySQL中的行级锁、表级锁、页级锁
MySQL 的行级锁有以下几种:
1. 共享锁(Shared Locks):也称为读锁,顾名思义,它是用于读取数据的锁。在执行 SELECT 查询语句时,会自动加上共享锁,其他线程可以继续读取同一行数据,但不能进行写入操作,直到该锁被释放为止。
2. 排他锁(Exclusive Locks):也称为写锁,顾名思义,它是用于写入数据的锁。在执行 INSERT、UPDATE、DELETE 等写操作时,会自动加上排他锁,其他线程不能读取或写入同一行数据,直到该锁被释放为止。
3. 记录锁(Record Locks):也称为行锁。它是针对单个数据行的锁,可以使用 SELECT ... FOR UPDATE 或 SELECT ... LOCK IN SHARE MODE 显式地加上记录锁。当一个线程获取了一行记录的锁时,其他线程不能对该行进行写入操作。
4. 间隙锁(Gap Locks):它是一种针对索引范围的锁,用于保护一个范围内的数据行,但不包括这个范围的第一行和最后一行。它可以防止其他线程在这个范围内插入新的数据行,但允许插入数据行在范围之外的其他位置。
5. Next-Key 锁:它是一种结合了记录锁和间隙锁的锁机制,用于防止幻读问题的发生。在执行 SELECT ... FOR UPDATE 或 SELECT ... LOCK IN SHARE MODE 时,会自动加上 Next-Key 锁,它会锁住一个范围内的数据行和这个范围之前的间隙,防止其他线程在这个范围内插入新的数据行或更新已有数据行。
阅读全文