作者:手机用户2602896383 | 来源:互联网 | 2023-02-05 19:07
在PostgreSQL中,每次更新元组都会创建新的元组版本.所以在一段时间内可能有很多版本的相同元组和不同的事务可以看到不同版本的元组(使用可见性规则)
在事务完成之前更新索引.如何使用SI?
那么当一个事务更新元组时,索引条目更新为指向新版本的元组?
1> Laurenz Albe..:
由于PostgreSQL通过同时保留表中一行的多个版本来实现MVCC,因此它还为单行的不同版本保留了多个索引条目(如果索引条目未被修改,有时可以避免使用仅有堆的元组在更新期间,更新的行与原始版本位于同一个表块中).
可见性信息不存储在索引中,因此要在索引扫描期间找到正确的行版本,必须检查所有这些索引条目的表条目(如果已知索引块仅包含条目,则可以避免这种情况每个人都可以看到;这是一个仅索引扫描).
在autovacuum期间,旧索引条目与旧表条目一起被删除.