Greenplum的数据库使用PostgreSQL的多版本并发控制(MVCC)模型来管理堆表的并发事务。
数据库管理系统的并发控制不但能保证并发查询的执行并获得正确的结果,同时还能确保数据库的完整性。传统的数据库使用两阶段锁定协议,以防止交易的修改已被另一个并发的交易读取,并防止任何并发事务读取或写入另一个事务已经更新的数据。事务间的协调需要在数据库中使用锁,这就降低了整体的交易量。
Greenplum的数据库使用PostgreSQL的多版本并发控制(MVCC)模型来管理堆表并发访问。使用MVCC后,每个查询在启动时在数据库的一个快照上执行,在查询的执行中,一个查询无法看到其他并发事务所造成的数据更改。这就保证了一个查询看到数据库的一致视图。读取行的查询永远无法阻止等待写入行的事务的查询。相反,写数据的查询不能被读取行的交易加锁。这样比使用锁来协调读取和写入数据的事务之间连接的传统数据库系统更大的并发性。
注:追加优化的表比本主题中讨论的MVCC模型不同的并发控制模型进行管理。它们主要用途是“一次写入,多次读取”的应用,从来没有,或者只有很少,执行行级更新。
本文来源:https://blog.csdn.net/kygoal/article/details/74999789