PostgreSQL索引如何处理MVCC
在PostgreSQL中,元组的每次更新都会创建新的元组版本。 所以在一段时间内可以有很多相同元组的版本,不同的事务可以看到不同版本的元组(使用可见性规则)
交易完成前更新索引。 这如何与SI协同工作?
所以当一个事务更新元组时,索引条目更新为指向新版本的元组?
由于PostgreSQL通过同时在表中保留一行的多个版本来实现MVCC,因此它还为单个行的不同版本保存多个索引条目 (有时,如果索引条目未被修改,可以使用仅堆元组来避免这种情况在更新期间,更新的行与原始版本位于同一个表格块中)。
可见性信息未存储在索引中,因此为了在索引扫描期间找到正确的行版本,必须检查所有这些索引条目的表条目(有时候,如果已知索引块只包含条目,则可以避免这种情况这对每个人都是可见的;这是仅索引扫描)。
自动清理期间旧索引条目与旧表条目一起被删除。
链接地址: http://www.djcxy.com/p/30613.html