悲观锁与乐观锁的实现(详情图解)

本文介绍了悲观锁和乐观锁的概念,以及它们在数据库并发控制中的应用。悲观锁在访问数据时预设会有并发修改,采用加锁机制,而乐观锁则在更新数据前检查是否被修改,通过版本号或时间戳实现。文章通过商品购买的例子,详细解释了悲观锁的实现方式,并展示了MySQL中的悲观锁SQL示例。
摘要由CSDN通过智能技术生成

  • 在了解悲观锁和乐观锁之前,我们先了解一下什么是锁,为什么要用到锁?

  • 技术来源于生活,锁不仅在程序中存在,在现实中我们也随处可见,例如我们上下班打卡的指纹锁,保险柜上的密码锁,以及我们我们登录的用户名和密码也是一种锁,生活中用到锁可以保护我们人身安全(指纹锁)、财产安全(保险柜密码锁)、信息安全(用户名密码锁),让我们更放心的去使用和生活,因为有锁,我们不用去担心个人的财产和信息泄露。

  • 而程序中的锁,则是用来保证我们数据安全的机制和手段,例如当我们有多个线程去访问修改共享变量的时候,我们可以给修改操作加锁(syncronized)。当多个用户修改表中同一数据时,我们可以给该行数据上锁(行锁)。因此,当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准确性,通过这种手段保证了当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的

  • 没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题,如下图所示:

在这里插入图片描述

由于并发操作,如果没有加锁进行并发控制,数据库的最终的一条数据可能为3也有可能为5,导致数值不准确

[](()二、悲观锁和乐观锁


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值