1.自增锁
自增锁用于在插入新行时保证表中的自增值的顺序性,防止多个线程并发插入时自增值相同。它是一种表锁,因为它会锁定整张表。
2.共享/排它锁
共享锁和排它锁用于控制读写操作的并发访问。共享锁允许多个事务并发读取同一行数据,但不允许其他事务并发修改这行数据。排它锁则只允许一个事务进行修改,其他事务不能读取和修改。
3.意向锁
意向锁是一种辅助锁,用于表明一个事务想要在某个数据行上获取什么类型的锁,以协助其他事务在该数据行上获取适当的锁。
4.插入意向锁
插入意向锁是一种特殊的意向锁,用于在插入新行之前获取锁,以确保没有其他事务在这个插入位置上插入了行。
5.记录锁
记录锁用于锁定单个数据行,防止其他事务对其进行修改。当事务A获取了某行的共享锁时,事务B可以继续获取该行的共享锁,但无法获取该行的排它锁,直到事务A释放共享锁。
6.间隙锁
间隙锁用于防止其他事务在间隙中插入新行或更新已有行。它会在记录锁和临键锁之间锁定间隙,以确保其他事务无法插入行或更新行,从而防止不可重复读和幻读问题。
7.临键锁
临键锁是一种特殊的间隙锁,用于锁定一个值在范围内但不存在的行。例如,当事务A插入了一行时,事务B也想插入一行,但在与事务A插入的行具有相同的值时,事务B需要等待临键锁的释放。