高并发系统中,数据库相关知识

乐观锁

假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

乐观锁使用一个自增的字段表示数据的版本号(或者timestamp),更新的时候检查版本号是否一致,比如数据库中版本号为4,更新时版本号使用版本号version=5,与数据库中的版本号version+1=5)做比较,如果相等,则可以更新,如果不相等,其他程序已更新该记录,返回错误。

观锁

假定会发生并发冲突,屏蔽一切可能违反数据完整行的操作。

一般需要使用数据库的锁机制,比如MysqlInnoDB引擎的行级锁。

    在实际生产环境中,如果并发量不大且不允许脏读(原始数据为5AB两个事务,B其他事务更新数据为2,事务未提交时,A读取到的仍然为5),可以使用悲观锁。并发访问量大时,使用悲观锁有非常大的性能问题,可以选择乐观锁。

MemcachedCAS机制

CAS,又称Compare-and-Swap,代表一种原子操作。

MemcachedCAS机制解决的问题及其原理:

1. 实现了Check-and-Set原子操作功能;
2. 
其使用方式为:首先使用gets指令一个key-valuekey对应value的版本号;其次操作产生新的value值;最后使用cas指令重新提交key-value,并附带刚刚获得到的版本号;
3. 
当服务端判断cas操作中的版本号不是最新的时,则认为改key的值已经被修改,本次cas操作失败。程序设计人员通过CAS机制可实现自增和自减的原子操作;

可以看到MemCacheCAS机制和数据库的乐观锁实现原理非常类似。

从这里http://weibo.com/p/1001603862417250608209搬运来的哦。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值