根据锁的粒度可以分为全局锁、表级锁、行级锁
根据锁的性质可以分为共享读锁、独占写锁
根据锁的思想可以划分为乐观锁、悲观锁
全局锁
全局锁就是锁住数据库中的所有表。
表级锁
每次操作锁住整张表,表级锁又分为表锁、元数据锁、意向锁。
表锁
表共享读锁
表独占写锁
元数据锁
主要是为了防止DDL和DML冲突,隐式加锁。
意向锁
避免了加表锁的时候一行一行查看行锁的数据(相当于加了一个标志),隐式加锁。
行级锁
行级锁又分为行锁、间隙锁、临建锁
行锁
操作时锁定一行数据,RC和RR下都支持。
行共享读锁
行独占写锁
间隙锁
是为了防止幻读,在RR级别才会有。
临键锁
为了防止幻读,在 RR级别才会有。是间隙锁和记录锁结合。
乐观锁和悲观锁
乐观锁
乐观锁顾名思义就是很乐观,他查询数据的时候,都会认为其他事务不会修改数据,因此就不会对查询的数据加锁,只有在返回的时候,才会判断是否冲突。
悲观锁
悲观锁顾名思义就是悲观,每一次查询数据的时候,都会认为其他事务会修改数据,就会对查询的数据进行加锁。