博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一分钟教你知道乐观锁和悲观锁的区别
阅读量:5832 次
发布时间:2019-06-18

本文共 437 字,大约阅读时间需要 1 分钟。

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

 

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。

 

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

转载地址:http://fhedx.baihongyu.com/

你可能感兴趣的文章
Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法
查看>>
破解之API断点法
查看>>
程序员健身之马拉松篇
查看>>
2.[Yii]创建与设置默认控制器及载入模板
查看>>
顺序容器
查看>>
Win7 64位 IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>
cocos2dx ui显示机制
查看>>
S3C6410裸奔之旅——RVDS2.2编译、仿真、调试过程 LED流水灯---转的
查看>>
iOS开发网络篇—简单介绍ASI框架的使用
查看>>
简单的topK问题
查看>>
27、Service
查看>>
【BZOJ】3479: [Usaco2014 Mar]Watering the Fields(kruskal)
查看>>
xcode简介
查看>>
随机视频聊天
查看>>
【进阶修炼】——改善C#程序质量(3)
查看>>
用Unity做的一个小游戏,仿照一个样例写的,个人认为文章写的不错,哈哈
查看>>
北京西客站火车行李托运指南
查看>>
JAVA反射机制
查看>>
hdu-4857-逃生-拓扑排序
查看>>
Android布局文件layout.xml的一些属性值
查看>>