Mysql锁有哪些
按锁粒度分类:
- ⾏锁:锁某⾏数据,锁粒度最⼩,并发度⾼
- 表锁:锁整张表,锁粒度最⼤,并发度低
- 间隙锁:锁的是⼀个区间
还可以分为:
- 共享锁:也就是读锁,⼀个事务给某⾏数据加了读锁,其他事务也可以读,但是不能写。
- 排它锁:也就是写锁,⼀个事务给某⾏数据加了写锁,其他事务不能读,也不能写。避免出现脏读和不可重复读。
也可以分为:
- 悲观锁:执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。
- 乐观锁:执行操作前假设当前操作不会被打断(乐观)。基于这个假设,我们在做操作前不会锁定资源,万一发生了其他操作的干扰,那么本次操作将被放弃。
