6.mysql的锁

  1. 按照粒度行锁、表锁
  2. 按照级别共享锁、排它锁
  • 共享锁:事务A给一个数据加上了共享锁,事务B也只能给这条数据加上共享锁都不能去加排他锁,并且都只能进行读操作,不能执行写操作
  • 排他锁:事务A给一条数据加上了排他锁,可以进行读和写操作事务B既不能给这条数据加共享锁,也不能加排它锁,不能对这条数据进行任何操作
  1. 按照使用方式乐观锁、悲观锁
  • 悲观锁:对一条记录修改前,会尝试加一个悲观锁,如果加锁成功,那么就去对该记录访问和操作。操作完成就会释放锁。如果在加锁的过程中有其他的操作给该条记录加排他锁,那么就会等待或者抛异常
  • 乐观锁:乐观锁主要是通过version版本号的方式实现的,在对一条数据修改的同时,回去判断版本号和预期的版本号是否一致。
  1. 按照锁对象间隙锁、记录锁、临键锁。
  • 记录锁:锁的是索引记录,给一个索引节点加一把锁。即使没有创建索引,innodb也会创建一个隐式的主键索引。
  • 间隙锁:间隙锁是在索引之间加一把锁。在查询的时候使用索引做范围查询如果没有命中任何一条记录,那么就是加的间隙锁。
  • 临键锁:记录锁和间隙锁的组合。在查询的时候使用索引做范围查询,如果命中了记录,那么就是加的临键锁。

MySQL的锁机制——记录锁、间隙锁、临键锁_mysql间隙锁和临键锁各自的触发条件_路上阡陌的博客-优快云博客

  1. 意向锁:主要是为了解决行锁和表锁冲突
  • 如果事务A想要对某个行加行锁,那么先判断意向锁是否没有被其他事务获取,没有被其他事务获取那么事务A获取成功。然后再去获取行锁
  • 如果事务B此时想要去获取表锁,那么也去判断意向锁是否被其他事务获取,然后发现意向锁已经被获取,那么就等待意向锁的释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值