乐观锁和悲观锁

        并发中对数据库数据进行写入才会出现的问题。

        众所周知,数据库数据在读取的时候有三种问题,脏读,不可重复读,幻读。而在写入的时候则有丢失更新问题,丢失更新就是多方同时对一个数据进行操作,数据库仅保存最后一个提交的数据,前面提交的更新都丢失。

        例如数据库有个数据为500。

        A取到500,将500修改为8000。

        B也取到500,将500修改为200。

        A先提交,数据库中数据变为8000。B再提交,数据库中数据又变为200。A的更新就丢失了。

        悲观锁和乐观锁就是解决丢失更新的两种方案。

        悲观锁是直接使数据只能同时为一人所修改,即在一方修改数据时其他人无法修改数据。此方法正如其名字所言,较为悲观,效率低,一般不推荐使用。

        乐观锁则是加入字段version,取出数据时取出version,提交修改时比较取出的version和当前数据库中的version是否一致,也就是有没有其他人已经对数据进行修改。如果不一致,也就是数据已经被其他人修改过,则无法进行提交;如果一致,则在提交修改的同时将version加1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值