`

悲观锁和乐观锁的区别和应用场景

 
阅读更多

悲观锁和乐观锁的区别和应用场景

https://zm8.sm-tc.cn/?src=l4uLj8XQ0J2TkJjRnIybkdGRmovQpryXmpG5mpGY0J6Ni5ack5rQm5qLnpaTjNDIys%2FPzMbOzg%3D%3D&uid=377d4216269bf3d8d359b1c664998fb5&hid=7eacc5eabee7f2317120a91afe7cb86b&pos=2&cid=9&time=1503321001497&from=click&restype=1&pagetype=0000000002000408&bu=web&query=%E4%B9%90%E8%A7%82%E9%94%81%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei

 

摘要:

在实际生产环境里边,如果并发量不大且不允许脏读,可以使用悲观锁解决并发问题;但如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以我们就要选择乐观锁定的方法.

 

两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

分享到:
评论

相关推荐

    36谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?

    36谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?

    悲观锁和乐观锁.md

    所谓乐观锁,重视假设最好的情况,每次去拿数据都认为别人不会修改,所以不会上锁,但是会在更新时判断一下在此期间这个数据有没有更改,使用版本号机制和CAS算法实现,乐观锁适用于多读的应用类型,这样可以提高...

    MySQL中的悲观锁与乐观锁

    在关系型数据库中,悲观锁与乐观锁是解决资源并发场景的解决方案,接下来将详细讲解:magnifying_glass_tilted_right:一下这两个并发解决方案的实际使用及优缺点。 首先定义一下数据库,做一个最简单的库存表,如下...

    面试官问:说说悲观锁、乐观锁、分布式锁?都在什么场景下使用?有什么技巧?.docx

    面试官问:说说悲观锁、乐观锁、分布式锁?都在什么场景下使用?有什么技巧?.docx

    MySQL面试题(记得被问过的一些题目)

    char和varchar两种数据类型的区别与适用场景?...乐观锁和悲观锁的使用场景? 什么是死锁? 解决死锁的机制有哪些? 发生死锁的场景有哪些? 什么是事务? 事务的特性与适用场景? 事务的隔离级别与适用场景?

    【RocksDB】TransactionDB源码分析.docx

    RocksDB的Transaction分为两类:Pessimistic和Optimistic,类似悲观锁和乐观锁的区别,PessimisticTransaction的冲突检测和加锁是在事务中每次写操作之前做的(commit后释放),如果失败则该操作失败;...

    常见(MySQL)面试题(含答案).docx

    数据库悲观锁和乐观锁的原理和应用场景? 如何做 MySQL 的性能优化? 索引是什么?MySQL为什么使用B+树,而不是使用其他?B+树的特点 创建索引时需要注意什么? CHAR和VARCHAR的区别? NOW()和CURRENT_DATE()有...

    高并发场景防止库存数量超卖少卖

    悲观锁:在数据库层面,对库存记录进行锁定,确保同一时刻只有一个事务能扣减库存,但可能导致锁竞争激烈,影响性能。 乐观锁:通过在库存记录中增加版本号字段,更新时验证版本号是否改变,若改变则表示库存已被...

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    - 乐观锁和悲观锁 - 分库、分表、分区 - 存储过程、定时任务 - MySQL 视图 (VIEW) - Redis 和 MySQL 双写一致性 - 高并发高可用方案 - Join语句还能不能用? - 主从同步有延迟怎么办? - .frm .myi .myd .ibd 文件 - ...

    interview:面试题目汇集

    目录线程安全new 和 make调度器G-P-M模型垃圾回收标记清扫算法问题mysql存储引擎InnoDB vs MyISAM事务支持表锁差异全文索引锁乐观锁 vs 悲观锁乐观锁悲观锁共享锁(读锁)独占锁(写锁)锁的颗粒度表级锁行级锁间隙...

    2024年SQL语句常考面试题(干货满满).zip

    内容涉及SQL的定义、数据库类型、SQL语言的不同分类(DDL、DML、DCL)、连接类型(内连接、左连接等)、索引的作用和原理、事务的概念及其ACID特性、SQL注入的防护、存储过程与函数的区别、触发器的功能、视图的使用...

    Java常见面试题208道.docx

    176.说一下乐观锁和悲观锁? 177.mysql 问题排查都有哪些手段? 178.如何做 mysql 的性能优化? 十八、Redis 179.redis 是什么?都有哪些使用场景? 180.redis 有哪些功能? 181.redis 和 memecache 有什么区别? ...

    不可不说的Java“锁”事

    下面给出本文内容的总体分类目录:乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的...

    基于Java+MySQL设计与实现的秒杀与抢购模型架构【100013279】

    对高并发高负载情形下的应用场景进行分析,以高效地处理资源竞争为目的,设计一个秒杀与抢购模型。 本项目提供了三种解决方案来比较系统的性能: 1.利用MySQL的update行锁实现悲观锁。 2.MySQL加字段version实现乐观...

    javabitset源码-Study:学习

    悲观锁 乐观锁 & CAS ABA 问题 CopyOnWrite容器 RingBuffer 可重入锁 & 不可重入锁 互斥锁 & 共享锁 死锁 操作系统 计算机原理 CPU 多级缓存 进程 线程 协程 Linux 设计模式 设计模式的六大原则 23种常见设计模式 ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【数据库】乐观锁与悲观锁的区别 107 【数据库】数据库的三范式 107 【数据库】inner/left/right/full join的区别 109 【数据库】哪些字段该添加索引,哪些不添加? 109 【数据库】分页查询语句怎么写? 110 Mysql...

    成都四方伟业JAVA笔试题-notebook:你好2019

    5.乐观锁和悲观锁什么场景下使用,都是怎么实现的? 6.怎么看SQL用到了索引。 7.开发分业务性和非业务性,非业务性中经常碰到容量,并发,安全,性能等等,你是怎么解决的。 8.说一下学习JVM后对自己写代码上有什么...

    SecKillDesign:秒杀与抢购系统架构设计与实现

    对高并发高负载情形下的应用场景进行分析,以高效地处理资源竞争为目的,设计一个秒杀与抢购模型。 本项目提供了三种解决方案来比较系统的性能: 1.利用MySQL的update行锁实现悲观锁。 2.MySQL加字段version实现乐观...

    一次性搞定数据库事务

    彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、...

Global site tag (gtag.js) - Google Analytics