1. CAS
CPU指令 和 程序并发原语中存在 CAS 概念, Compare and Set, 就是修改一个寄存器区域或变量值时,先检查 old value, old value相同再进行修改,否则放弃。
例如:
已知 int a = 1;
引用
非 CAS 赋值为: a = 10;
CAS 赋值为 compareAndSet( 1, 10);
这样,在多线程并发操作时,最终 a 将被原子性的修改,而不会发生冲突的结果。
而数据库的事务中并发冲突的场景与之非常类似,都是对共享资源竞争访问时的突出问题。
2. 基于CAS机制的数据库update操作
由CAS的原理,可以考虑以类似的方式处理数据库的update操作。
假定订单 OD_0100 的总价款为1100 元, 现在要将其修改为 1500 元,
引用
update sale_order set order_amount = 1500.00
where order_id = 'OD_0100'
采用 CAS 机制进行修改,假定已经知道订单修改前的总价款 1100,则update SQL为
引用
update sale_order set order_amount = 1500.00
where order_id = 'OD_0100'
and order_amount = 1100.00
若出现并发冲突,例如:order_amount 已经先其他请求修改为 900, 那么上面的 update 语句的操作结果数为 0; 此时,客户端需要重新查询订单,再尝试第二次修改。 这类似于 CAS 中的自旋。
3. 与其他事务机制比较
数据库事务有悲观锁和乐观锁,乐观锁有一种机制是基于 version 字段来控制并发修改冲突。
与version事务机制类似,CAS事务也是一种细粒度的锁。然而,version 为行级锁,粒度过大; 而 CAS 事务为列级锁,粒度更小。 根据锁机制的一般原则,粒度越小,并发性能越高。
分享到:
相关推荐
Java CAS原理深度分析
谈谈CAS在一种“分布式ID生成方案”上的应用。 所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一ID的方法。
Java CAS 原理分析整理...Java CAS 原理分析整理...Java CAS 原理分析整理...Java CAS 原理分析整理...Java CAS 原理分析整理...Java CAS 原理分析整理...
CAS原理和配置过程.,轻轻松松搞定CAS配置。。。。。。。。
CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子CAS实现原理与例子
cas原理 webflow mvc ioc 登陆流程
H3C_CAS虚拟机支持的操作系统列表v3.5H3C_CAS虚拟机支持的操作系统列表v3.5
cas原理.doc
cas单点才登出原理cas单点才登出原理
CAS的原理分析
VMware虚拟机与CAS虚拟机互转操作步骤
CAS2.0普通模式及代理模式的动画演示过程,通过该演示,能够初步了解单点登录及cas原理
CAS单点登录操作文档 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决...
条件接收系统CAS(Conditional Access System)是付费数字电视广播的核心技术,其主要功能是阻止非法入侵数字广播网络......
cas原理[归纳].pdf
以普度大学的CAS,讲解CAS基本原理,安装配置过程
H3C_CAS支持硬件SR-IOV操作指导书 H3C_CAS与趋势产品联调操作配置指导书 H3C_CAS虚拟机内存隔离操作指导书 H3C_CAS虚拟机搭建双机热备环境方案及报告 ) H3C_CAS_3.0虚拟机防病毒操作指导书 H3C_CAS端口镜像特性...
CAS 原理及分析.............
CAS 原理及分析..............
本项目用于实际单点登录项目中集成cas修改项目登录页,直接解压项目导入ecliplse即可以使用,脚本用原来自带的就可以