zoukankan      html  css  js  c++  java
  • 悲观锁和乐观锁

    悲观锁和乐观锁的使用场景及具体实现
    悲观锁对于每次数据操作都认为会被其他事物修改,所以使用所机制锁住当前数据项,其他修改事物在此次数据操作完成之前都要等待。
    悲观锁对于数据并发冲突可能性比较高的情况下使用,写操作比较多,冲突性大会导致上层不断地retry消耗性能。
    乐观锁对于每次数据操作都认为不会被其他事务所修改,没有加锁,但是使用版本号标记,每次修改前会判断版本号(判断在这期间有没有人更新过数据),版本号一致就进行数据修改,不一致就返回更新错误。
    乐观锁对于数据并发冲突可能性比较小的情况下使用,写操作比较少,冲突性小省去了锁的开销,提升了性能加大了系统整个的吞吐量。

    建议:通过挑选乐观锁,可以减小锁力度,从而提升吞吐.乐观锁需要灵活运用,现在互联网高并发架构中,收到fail-fast思路的影响,悲观锁已经非常少见了。

    分享、奉献、勤奋、好学
  • 相关阅读:
    django计数器: form collections import Counter
    issubclass使用
    Python rpartition() 方法
    try...except...else高级用法
    FBV及CBV区别
    类属性及对象属性
    判断类或对象方法
    django md5
    @cached_property
    js Array 中的 map, filter 和 reduce
  • 原文地址:https://www.cnblogs.com/zzlblog/p/8522510.html
Copyright © 2011-2022 走看看