首页 > 其他分享 >悲观锁和乐观锁

悲观锁和乐观锁

时间:2023-03-01 14:55:19浏览次数:32  
标签:每次 乐观 线程 悲观 多读 上锁

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁表锁等,读锁写锁等,都是在做操作之前先上锁。(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。)

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。(乐观锁通常多于写比较少的情况下(多读场景),避免频繁加锁影响性能,大大提升了系统的吞吐量。)

标签:每次,乐观,线程,悲观,多读,上锁
From: https://www.cnblogs.com/Spepsi24/p/17168156.html

相关文章

  • 六、MybatisPlus实现乐观锁
    乐观锁场景一件商品,成本价是80元,售价是100元。老板先是通知小李,说你去把商品价格增加50元。小李正在玩游戏,耽搁了一个小时。正好一个小时后,老板觉得商品价格增加到150元,......
  • 数据库乐观锁和悲观锁
    悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁例子:使用的是Mariadb,用的是for......
  • MYSQL悲观锁-用户余额
    无论什么锁JAVA的synchronized也好,还是MYSQL的锁都好,要注意分布式环境与单机环境1.乐观锁乐观认为并发不高,甚至没有并发。其中一种实现方式依靠在表中多加一个版本号字段......
  • 决战圣地玛丽乔亚Day13--Mysql性能调优以及乐观锁/悲观锁
    1.参数配置调优。 先pass2.索引调优如果使用联合索引,要遵循最左匹配原则。index(a,b,c) 如果想使用这个索引,那么必须遵循这个顺序使用。模糊查询也是要......
  • CAS与乐观锁
    1什么是乐观锁?说到乐观锁,就不得不先提起悲观锁(Pessimistic Lock),或者说是悲观并发控制(Pessimistic Concurrency Control,PCC)。悲观锁认为多线程同时修改共享资源的......
  • CAS 悲观锁 乐观锁
    前面的偏向锁,轻量级锁,重量级锁都是悲观锁,都会认为必须要对操作对象进行互斥访问,不然就会产生异常,所以线程只供一个线程使用,阻塞其他线程,是悲观的在某些情况下,同步的耗时......
  • 悲观锁和乐观锁
    悲观锁:认为线程问题一定会发生,在操作数据之前就获取锁,确保线程串行执行。列如Synchronized、lock乐观锁:认为线程问题不一定发生,因此不加锁,只是在更新数据时去判断有没有其......
  • 有了事务为什么还需要乐观锁和悲观锁
    ​​​​​为什么有了事务这东西,还需要乐观锁悲观锁?事务是粗粒度的概念、乐观锁悲观锁可以更细粒度的控制;比如抢票,假设余票只有1张;隔离级别可以保证事务A和事务B不能读到对......
  • mysql:聊聊mysql中的锁八股文,锁分类,表锁(s锁,x锁,意向锁,自增锁,元数据锁)行锁(记录锁,间隙锁,临
    mysql:锁分类,表锁(s锁,x锁,意向锁,自增锁,元数据锁)行锁(记录锁,间隙锁,临键锁,插入意向锁)乐观锁,悲观锁,显示锁,隐式锁1从数据操作的类型划分:读锁、写锁读锁读锁:也称为共享锁、英文......
  • mysql悲观锁 (使用行级锁,走索引字段,必须是具体值)
        不需要加锁,一行更新语句即可,符合原子性   对于没有加注解的,mysql也会对增删改的自动加上事务,autocommit=0的时候才没有事务,其他都有事务开启......