数据库事务处理的艺术:事务管理与并发控制---第12章InnoDB并发控制系统的实现--MVCC

来源:转载


MVCC
,多版本并发访问控制技术。本书在
2.2.4

2.2.5
节做过理论上的介绍。本章我们也把
MVCC
技术单独列为一章,这是因为
MVCC
对于传统的数据库引擎而言,非常重要。但是,为什么
MVCC
非常重要呢?



大家都知道
MVCC
这个词很火,很多开发数据库引擎的团队宣传其数据库产品的时候,把
MVCC
作为一个重点功能做了宣传,似乎数据库的并发控制技术使用的只是
MVCC
技术。宣传书中并不会说明
MVCC
技术和其他并发访问控制技术之间的关系。那么,
MVCC
技术和其他并发访问控制技术之间的关系到底是什么?



细心的读者,在阅读了第
2
章之后,其实完全可以回答这两个问题。



在此对这两个问题再做一个小结:



Q1

MVCC
技术和其他并发访问控制技术之间的关系到底是什么?



A1



q
首先,基于封锁技术、基于时间戳技术、基于有效性检查、MVCC
等技术,都是并发访问控制技术。



q
其次,多数数据库引擎,采用的并发访问控制技术,都是基于封锁技术,然后在封锁技术的基础上,采用了MVCC
技术。如Oracle
、PostgreSQL
、MySQL/InnoDB
都是如此。



q
第三,MVCC
技术多用于弥补基于封锁技术在读-
写、写-
读这两种情况下的并发不足(不足之处是根本没有并发,MVCC
的引入使得并发可行)。



Q2
:为什么
MVCC
十分重要呢?



A2



q
在第1
章和第2
章,讨论了四种情况(读-
读、读-
写、写-
读、写-
写)里的三种冲突(读-
写、写-
读、写-
写),基于封锁的并发访问控制技术,为了保证数据的一致性,只能允许读-
读操作并发执行,而其他三种情况会造成如第1
章里讨论的一些数据异常现象,所以被限制了并发,这样导致基于封锁的并发访问控制技术的并发度很低。



q
MVCC
技术,因为同一个数据项存在多个版本,使得不同事务的对同一个数据项的读操作可以根据其读时刻的快照作用在不同的版本上,因而避免了1.1
节讨论的三种读数据异常现象,所以对于读-
写、写-
读操作允许并发,提高了并发度。所以MVCC
技术才显得重要。



q
另外,传统的事务型数据库,尽管以插入和修改数据的操作为主,但是查询工作也很重要,所以MVCC
技术引入使得读和写操作互不阻塞、使得长的读操作事务能够被放心地并发执行,大大提高了事务型数据库在分析、查询方面的能力,因而被传统数据库厂商所青睐。



q
基于上面所述的原因,才使得MVCC
技术显得十分重要。



但是,尽管本章把
MVCC
技术单独成章,从逻辑的角度看,在理解的时候,不要把
MVCC
和其他并发访问控制技术割裂,而是要把他们融合在一起加以理解。



InnoDB

MVCC
技术解决了其使用的基于封锁技术在并发方面的不足之处(不足之处如
Q2
所言),如下我们讲讨论
InnoDB

MVCC
技术的实现方式。

分享给朋友:
您可能感兴趣的文章:
随机阅读: