多版本并发控制--MVCC(二)

(一)什么是MVCC

①多版本并发控制【没有统一实现标准】【但是 大都实现了读操作  非阻塞写操作锁定必要的行

②典型的实现方式:乐观并发控制(乐观锁);和 悲观并发控制(悲观锁)。

(二):什么是乐观锁,什么是悲观锁?what?

 

①:乐观锁:每次拿数据不会上锁。【心态好】

 

②:悲观锁:在整个数据处理过程中数据处于锁定状态【心态不好】

 

(三)应用场景?where?

 

乐观锁:用于 数据争用不大冲突较少的环境中【偶尔事务回滚的成本<读取数据锁定数据的成本】。

乐观锁并发控制事务过程:

1. 读取:事务将数据读入缓存,这时系统会给事务分派一个时间戳。 
2. 校验:事务执行完毕后,进行提交。这时同步校验所有事务,如果事务所读取的数据在读取之后又被其他事务修改,则产生冲突,事务被中断回滚。 
3. 写入:通过校验阶段后,将更新的数据写入数据库。

 

 

悲观锁:用于 数据竞争激烈的环境中,发生并发冲突时【锁保护数据的成本<事务回滚的成本】

 

(四)怎么用?how?

(1):乐观锁:

①:使用数据版本记录机制实现。表中增加一个 字段 :version,每次数据更新一次version+1;提交更新时,跟读取时进行对比。一致则成功,不一致则更新失败。

②:增加一个时间戳:timestamp类型。时间一致则成功,否则失败。

 

posted @ 2018-03-17 16:28  瀧思葉  阅读(143)  评论(0编辑  收藏  举报