简论数据库乐观悲观锁与并发编程中的CAS
2024-08-29 18:53:09
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。
http://www.cnblogs.com/shijiaqi1066/p/5783205.html
1. 数据库悲观锁
对表加锁;
操作表(增删改查);
对表解锁;
2. 数据库乐观锁
update 表 set 列 = newValue where [条件] and 列 = 旧值;
注意:set 与 where 是合并在一起的,即原子执行的。
解决ABA问题
对每张表引入版本号version。
改进:
update 表 set 列 = newValue , version = oldVersion+1 where [条件] and version = oldVersion;
update失败怎么办?读取当前值,再次update,直到指定次数,或永远。
3. CAS
即 compare and swap,swap的意思虽然为“交换”,但实际编程中swap其实可以理解为set。
相当于数据库乐观锁中使用的update语句。比较与交换是一个连在一起的操作,即比较交换是一个原子操作。
比较失败怎么办?不交换,自旋。
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。
http://www.cnblogs.com/shijiaqi1066/p/5783205.html
最新文章
- shell面试题目总结
- 如何书写高质量的jQuery代码(转)
- destoon 深度整合discuz x2 UC 之免邮箱二次验证
- 转: Oracle中的物化视图
- Linux Lab
- Builder创建者模式
- Java 将自己定义的对象作为HashMap的key
- 文本属性Attributes 初步
- Dockerfile命令详解(超全版本)
- 移动端布局最佳实践(viewport+rem)
- docker~windows版本的安装与使用
- 齐博cms 7.0 漏洞分析
- Flex布局学习笔记
- pentaho cde 自定义复选下拉框 checkbox select
- HBase之CF持久化系列(续1)
- 高阶组件 HOC
- 字符设备驱动(一)---led
- ArcGIS AddIn调用ArcMap自带的对话框
- web api HttpConfiguration
- Fiddler(一)Fiddler介绍及应用场景