無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

第 54章インデックスアクセスメソッドのインタフェース定義

本章は、 PostgreSQL のコアシステムと個々のインデックス種類を管理する インデックスアクセスメソッド との間のインタフェースを定義します。 コアシステムはインデックスの仕様のみを把握しています。 したがって、追加コードを記述することで完全に新しいインデックス種類を開発することができます。

PostgreSQL のインデックスはすべて、技術的には 補助的なインデックス として知られるものです。 つまり、インデックスは対象となるテーブルファイルとは物理的に分かれています。 各インデックスは独自の物理的な リレーション として格納され、また、 pg_class カタログ内の項目として記述されます。 インデックスの内容は完全にそのインデックスアクセスメソッドの制御下にあります。 実際、すべてのインデックスアクセスメソッドは、通常の格納マネージャとバッファマネージャを使用してインデックスの内容にアクセスできるように、インデックスを標準サイズのページに分割します。 (既存のすべてのインデックスアクセスメソッドではさらに、 項58.6 で説明する標準ページレイアウトを使用し、すべて同じ書式をインデックスタプルヘッダに使用します。 しかし、これはアクセスメソッドに強制されていることではありません。)

インデックスは効率的にあるデータキー値を、インデックスの親テーブル内の行バージョン(タプル)の タプル識別子 言い換えると TID に関連付けます。 TIDは、ブロック番号、ブロック内の項目番号( 項58.6 を参照)から構成されます。 これは、特定の行バージョンをテーブルから取り出すのに十分な情報です。 MVCCでは1つの論理的な行に複数の現在のバージョンがあることを、インデックスが直接意識することはありません。 インデックスでは、各タプルは、独自にインデックス項目を持たなければならない独立したオブジェクトです。 したがって、行を更新すると、キーの値が変わっていなかってとしても、その行に対してまったく新しいインデックス項目が作成されます。 (HOTタプルはこの説明の例外ですが、インデックスはこれらにも関与しません。) (バキューム実行によって)不要タプル自身が回収された時に、不要タプルに対するインデックス項目は回収されます。


powered by SEO.CUG.NET