悲观锁、乐观锁

悲观锁:悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时就加上排他锁
乐观锁:乐观锁会乐观的认为每次查询都不会造成更新丢失.利用一个版本字段进行控制
 查询非常多,修改非常少,使用乐观锁

 修改非常多,查询非常少,使用悲观锁


第一张图的解释:

小zhang想在一个游戏网站买装备,此时游戏网站会去重定向到银行(假设是建设银行),然后银行再重定向会这个游戏网站.

但是小zhang点击充值的时候由于网页很慢,点击了好几下.....这个时候为了防止银行的钱过多的充值到小zhang的用户,银行会

设置一个callback属性,看这个属性的值如果是1了就不打钱了,如果检测到callback的值是0就打钱给小zhang。实际操作中,

会出现多线程的查询。假设有个order表还有一个account表。order表中有id account_id state money属性,account中有id money属性。如果打钱给了小zhang,那么order表中的state设置为1,表明已经打钱给了小zhang,然后设置money=money+100,假设银行查询了向此,第一次查询到用户的state是,0,money是0,那么就打钱,第二次检测到了state是1就不会打钱了。但是程序是并发的,第一次检查用户状态是0,然后并发到第二次查询,一看是也是0,那么就会出现问题。都是用查询那个隔离机制都不能控制了,这时候我们使用悲观锁,加上排它锁,其他就不能进来了.或者使用乐观锁,设置version的值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值