PostgreSQL 9.2.4文書 | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 56章データベースの物理的な格納 | 次のページ |
各ヒープリレーションは、どのページがすべての実行中のトランザクションから可視であることが分かっているタプルのみを持つことを追跡する、可視性マップ(VM)を持ちます。 これは、リレーションのファイルノード番号に_vmという接尾辞を付与した名前の別のリレーションフォーク内に主リレーションデータと並行して格納されます。 例えばリレーションのファイルノードが12345の場合、VMは主リレーションファイルと同じディレクトリ内の12345_vmというファイル内に格納されます。 インデックスはVMを持たないことに注意してください。
可視性マップは単にヒープページ当たり1ビットを保持します。 セットされたビットは、ページ内のすべてのタプルがすべてのトランザクションから可視であることが分かっていることを意味します。 これは、そのページにはバキュームが必要なタプルをまったく含んでいないことを意味します。 またこの情報は、インデックスタプルのみを使用して問い合わせに答えるためにインデックスオンリースキャンによっても使用されます。
このマップは、ビットがセットされている時は常にこの条件が真であることを確実に把握できるという点で保守的ですが、ビットがセットされていない場合は、真かもしれませんし偽かもしれません。 可視性マップのビットはバキュームによってのみで設定されます。 しかしページに対する任意のデータ編集操作によってクリアされます。