mysql悲观锁行级锁_mysql进阶-行级锁、表级锁、乐观锁、悲观锁

本文详细介绍了MySQL中行级锁和表级锁的概念,以及悲观锁和乐观锁的工作原理。行级锁锁定粒度小,适合并发场景但可能导致死锁;表级锁锁定粒度大,加锁速度快但并发度低。悲观锁适用于写操作频繁的场景,乐观锁适用于读操作频繁且冲突较少的场景。在实际应用中,根据业务需求选择合适的锁类型是关键。
摘要由CSDN通过智能技术生成

从应用的角度来看数据库锁可分为悲观锁、乐观锁

从数据库(InnoDB)的角度看,数据库锁可以分为行级锁和表级锁

1.1 什么是行级锁

InnoDB 存储引擎默认情况下,使用行级锁。行级锁是 MySQL 中锁定粒度最细的一种锁,它锁住的是行记录。行级锁可以大大减少数据库操作的冲突,但是加锁的开销也是非常大的。它具有如下特点:

由于开销比较大,加锁会很慢

锁定粒度小,所以锁冲突的概率低,并发度高

可能会出现死锁

1.2 什么是表级锁

表级锁是 MySQL 中锁定粒度最大的一种锁,它会锁住整张表。由于锁定粒度很大,它的实现会简单许多,资源消耗也会很低,大部分的存储引擎都支持表级锁,它具有如下特点:

由于开销比较小,加锁会很快

锁定粒度大,所以锁冲突的概率高,并发度低

不会出现死锁

1.3 MySQL 如何选择行级锁与表级锁

InnoDB 是否使用行级锁是通过索引来确定的,没有通过只能全表扫描使用的是表级锁

在有些特殊情况下是不成立的。例如,对于数据量很少的表,MySQL 会认为全表扫描更快,此时,即使使用索引字段查询,InnoDB 也会使用表锁,而不是行锁。

2.1 什么是悲观锁

在应用层面上以最坏的角度去对待并发的数据控制,认为共享数据被并发修改的可能性较高,在修改之前先去加锁 效率上,

缺点:处理加锁的过程会让数据库产生额外的开销,降低并发度,同时,还可能会有死锁的可能。<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值