MySQL 中有哪些锁类型?
1.行级锁
对特定的行加锁,适合高并发的情况,允许并发情况访问不同行
2.表级锁
对整个表进行加锁操作,用与保证完整的小型表,加锁的时候其他事务无法进行读和写
3.意向锁
意向锁分为意向共享锁和意向排他锁,用于行级锁和表级锁的结合
4.共享锁
允许多个事务并发读取同一资源,但不允许修改。只有在释放共享锁后,其他事务才能获得排它锁
5.排他锁
只允许一个事务对资源进行读写,其他事务在获得排它锁之前无法访问该资源。适用于需要保持数据的完整性和一致性
6.元数据所
用于保护数据库对象(如表和索引)的元数据,防止在进行DDL操作时其他事务对这些对象进行修改。
7.间隙锁
针对索中两个记录之间的间隙加锁,防止其他事务在这个间隙中插入新记录,以避免幻读。间隙锁不锁定具体行,而是锁定行与行之间的空间。
8.临键锁
是行级锁和间隙锁的结合,锁定具体行和其前面的间隙,确保在一个范围内不会出现幻读。常用于支持可重复读的隔离级别。
9.插入意向锁
一种等待间隙的锁,用于指示事务打算在某个间隙中插入记录,允许其他事务进行共享锁,但在插入时会阻止其他的排它锁。
10.自增锁
在插入自增列时,加锁以保证自增值的唯一性,防止并发插入导致的冲突。通常在插入操作时被使用,以确保生成的自增D是唯一的。