PostgreSQL索引如何处理MVCC

在PostgreSQL中,元组的每次更新都会创建新的元组版本。 所以在一段时间内可以有很多相同元组的版本,不同的事务可以看到不同版本的元组(使用可见性规则)

交易完成前更新索引。 这如何与SI协同工作?

所以当一个事务更新元组时,索引条目更新为指向新版本的元组?


由于PostgreSQL通过同时在表中保留一行的多个版本来实现MVCC,因此它还为单个行的不同版本保存多个索引条目 (有时,如果索引条目未被修改,可以使用仅堆元组来避免这种情况在更新期间,更新的行与原始版本位于同一个表格块中)。

可见性信息未存储在索引中,因此为了在索引扫描期间找到正确的行版本,必须检查所有这些索引条目的表条目(有时候,如果已知索引块只包含条目,则可以避免这种情况这对每个人都是可见的;这是仅索引扫描)。

自动清理期间旧索引条目与旧表条目一起被删除。

链接地址: http://www.djcxy.com/p/30613.html

上一篇: How PostgreSQL index deals with MVCC

下一篇: Does OrientDB actually implement MVCC?