美文网首页
乐观锁,悲观锁,防重表的思考

乐观锁,悲观锁,防重表的思考

作者: wuyuan0127 | 来源:发表于2018-05-10 19:37 被阅读0次

    乐观锁: 

    java当中 cas属于 乐观锁

    数据库中一般通过 version 版本号实现

    悲观锁:

    java当中 synchronized 和 Lock

    数据库中通过 select ...  where id=?   for update 实现

    防重表:

    通过建立一个字段或者多个字段的唯一索引,来防止并发情况下,数据只有一条记录能功能.

    乐观锁的使用场景:

    并发不超过20% 这句话很笼统

    举个栗子:

    比如 git代码 push到远程仓库,这种场景冲突的概率小于20%,就可以利用乐观锁

    悲观锁:

    比如转账这种场景,必须读取最新的金额去扣减

    防重表:

    悲观锁也会产生死锁,有时候,利用防重表的唯一索引,可以实现 唯一性的数据在并发环境下,只插入一条. 利用这一点和 扣减库存或者 扣减金额

    在同一个事务中,来解决超卖或者扣减金额有错的情况下很有效.

    相关文章

      网友评论

          本文标题:乐观锁,悲观锁,防重表的思考

          本文链接:https://www.haomeiwen.com/subject/dzytdftx.html