高并发系统中,数据库相关知识
来源:互联网 发布:吴峻申 上海 程序员 编辑:程序博客网 时间:2024/05/01 22:07
乐观锁
假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
乐观锁使用一个自增的字段表示数据的版本号(或者timestamp),更新的时候检查版本号是否一致,比如数据库中版本号为4,更新时版本号使用版本号version=5,与数据库中的版本号version+1=(5)做比较,如果相等,则可以更新,如果不相等,其他程序已更新该记录,返回错误。
悲观锁
假定会发生并发冲突,屏蔽一切可能违反数据完整行的操作。
一般需要使用数据库的锁机制,比如MysqlInnoDB引擎的行级锁。
在实际生产环境中,如果并发量不大且不允许脏读(原始数据为5,AB两个事务,B其他事务更新数据为2,事务未提交时,A读取到的仍然为5),可以使用悲观锁。并发访问量大时,使用悲观锁有非常大的性能问题,可以选择乐观锁。
Memcached的CAS机制
CAS,又称Compare-and-Swap,代表一种原子操作。
Memcached的CAS机制解决的问题及其原理:
1. 实现了Check-and-Set原子操作功能;
2. 其使用方式为:首先使用gets指令一个key-value及key对应value的版本号;其次操作产生新的value值;最后使用cas指令重新提交key-value,并附带刚刚获得到的版本号;
3. 当服务端判断cas操作中的版本号不是最新的时,则认为改key的值已经被修改,本次cas操作失败。程序设计人员通过CAS机制可实现自增和自减的原子操作;
可以看到MemCache的CAS机制和数据库的乐观锁实现原理非常类似。
从这里http://weibo.com/p/1001603862417250608209搬运来的哦。。。。
- 高并发系统中,数据库相关知识
- 数据库优化相关的知识,及高并发下的数据库优化,解决数据库并发瓶颈
- 高并发系统数据库设计
- 高并发系统数据库设计
- 高并发系统数据库设计
- 高并发系统数据库设计
- 高并发系统数据库设计
- 高并发系统数据库设计
- 【高并发架构知识】高并发数据库访问控制代码
- 高并发系统数据库架构设计
- 并发处理相关知识
- 高并发相关
- 高并发下的系统设计(偏数据库设计)
- 高并发数据库分表分库
- 高并发数据库设计方案
- 数据库高并发解决方法
- 高并发系统设计
- 高并发系统设计
- java反射详解
- IOS 给Button设置一个简单的动画
- find peak element
- Java - Thinking in Java 第4章 控制执行流程
- SQL C 接口
- 高并发系统中,数据库相关知识
- 怎样用大白菜U盘安装版Win8系统
- C1_作业
- Rust中文翻译19
- 由malloc内存分配是否连续 引出的 一些概念
- FMDB官方使用文档-GCD的使用-提高性能(翻译)
- mysql乱码问题
- js怎么打印对象?
- 睡觉是有好处的。