2017-04-24 25 views
0

在PostgreSQL中,元組的每次更新都會創建新的元組版本。所以在一段時間內可以有很多版本的相同的元組,並且不同的事務可以看到不同版本的元組(使用可見性規則)PostgreSQL指數如何處理MVCC

索引在事務完成之前被更新。這如何與SI協同工作?

因此,當一個事務更新元組,然後索引條目更新指向新版本的元組?

回答

5

因爲PostgreSQL通過同時保持一排的多個版本中的表實現MVCC,它也保持多個索引條目不同版本的單個行的(有時這可以用堆僅元組來避免如果索引條目在更新期間未被修改,並且更新的行與原始版本位於同一個表格塊中)。

能見度信息不存儲在索引中,所以要找到一個索引掃描過程中正確的行版本,所有這些索引條目的表條目已被選中(somethimes這可如果一個索引塊是已知可避免僅包含對每個人都可見的條目;這是一個僅索引掃描)。

在自動清理過程中舊索引條目與舊錶條目一起刪除。

+0

感謝您的解釋! – mshutov