从操作类型上来划分锁
从操作类型上来划分:读锁/共享锁、写锁/排他锁
从操作粒度上来划分锁
从操作粒度上来划分:表锁、行锁
表锁:
-
表级别的共享锁、排他锁
共享锁 排他锁 共享锁 兼容 不兼容 排他锁 不兼容 不兼容 -
意向锁:协调表锁与行锁的一种表级锁
例如:事务A给id = 1的数据加了一条行锁,这时事务B想给该表加一个排他锁是不可以的,但是事务B又不知道该表中有没有行锁,故需要一条条的去遍历数据,看该表中的数据到底加没加行锁,这样做很耗时性能差。
引入了人意向锁,当事务A给id = 1的数据加了一条行排他锁,这时数据库就会自动的创一个表级别的意向排他锁,这时事务B想给该表加一个排他锁,只需要看该表有没有意向排他锁即可,无需遍历表中的数据。
-
元数据锁(MDL):当执行DDL操作时需要用元数据锁来保护
例如:当一个事务在执行DML增删改时,另一个事务想要进行DDL(alter table、drop table)操作,这是不允许的,元数据锁会让该DDL操作处于阻塞状态。
行锁
-
记录锁:对表中的某条记录加