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

      可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。

      虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行。

      MVCC的实现是通过保存数据在某个时间点的快照来实现的。

      MVCC只在读提交和可重复读这两个隔离级别下工作。

     


     

      保存这两个额外的系统版本号,使大多数读操作都可以不用加锁,这样设计使得读数据操作很简单,性能很好,并且也能保证只会读取到符合标准的行,不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作,以及一些额外的维护工作。

     

    MVCC在RR和RC隔离级别下的区别:

      在RR隔离级别下,一个事务只能读取到事务开始的那个时刻的数据快照,即,别的事务修改并提交的数据在自身没有提交之前一般读取不到(加for update语句的select除外,因为这个语句要对数据加X锁必须读取最新的数据快照)。

      在RC隔离级别下,事务总是读取数据行的最新快照,即会产生不可重复读的问题。

  • 相关阅读:
    MySQL学习笔记
    FileInputStream
    Java 多个if 和多个else if 的区别
    Flume 聚合
    Flume SinkProcessor
    Flume ChannelSelector (包括自定义flume拦截器)
    Flume 案例演示
    為政第二
    各种版本 WordCount
    學而第一
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/9685300.html
Copyright © 2011-2022 走看看