zoukankan      html  css  js  c++  java
  • [MySQL] MVCC 多版本并发控制实现的事务

    1.没有一个统一的实现标准,实现了非阻塞的读操作,写操作也只锁定必要的行
    2.通过保存数据在某个时间点的快照实现的
    3.典型的有乐观并发控制和悲观并发控制
    4.innodb的mvcc是每次事务都有递增的版本号,通过在每行记录的后面添加两列隐藏字段,两列分别是是创建版本号和删除版本号,存储操作它事务的版本号
    5.在事务中增删改查就是对两列版本号字段进行操作

    insert 为新插入的每一行保存当前事务版本号到 行创建版本号字段
    update 插入一行新的保存当前事务创建版本号,修改原行数据的删除版本号为本次事务的版本号
    delete 修改行的删除版本号字段为本次事务的版本号
    select 查询 创建版本号字段 小于等于当前事务版本的数据 确保该记录是本次之前就存在的或本次事务新插的
    查询 删除版本号字段 不存在或者大于当前版本的数据 确保该记录在本次事务之前没删除

    6.这样的设计就不需要加锁了,读和操作性能好,但是需要额外的存储空间
    7.mvcc只在REPEATABLE READ和READ COMMITED两个隔离下工作;READ UNCOMMITED总是读取最新数据;SERIALIZABLE对读取的行都加锁

  • 相关阅读:
    【2017-03-09】SQL Server 数据库基础、四种约束
    【2017-03-05】函数基础、函数四种结构、ref和out参数、递归
    procecss on技巧
    角度与弧度
    C语言求π的方法
    三轴加速度传感器角度值转换原理
    C获取数组长度
    如何使用ProcessOn制作思维导图
    processon完全装逼指南
    NORDIC GATT事件
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10677999.html
Copyright © 2011-2022 走看看