zoukankan      html  css  js  c++  java
  • 多版本并发控制--MVCC(二)

    (一)什么是MVCC

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

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

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

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

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

    (三)应用场景?where?

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

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

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

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

    (四)怎么用?how?

    (1):乐观锁:

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

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

  • 相关阅读:
    I.MX6 Parallel RGB LCD Datasheet描述
    ubuntu IP 扫描
    I.MX6 按键开关机 PMIC 检测
    java中对List中对象排序实现
    jQuery实现父窗口的问题
    如何在Oracle中复制表结构和表数据
    handsontable常规配置的中文API
    oracle中to_date详细用法示例(oracle日期格式转换)
    js中子页面父页面方法和变量相互调用
    关于Ajax的type为post提交方式出现请求失效问题
  • 原文地址:https://www.cnblogs.com/not-alone/p/8590650.html
Copyright © 2011-2022 走看看