他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.7. ロックとインデックス

PostgreSQLは、テーブルデータへの「ノンブロック読み込み/書き込みアクセス」を備えています。しかし現在、この機能は PostgreSQLで実装されているすべてのインデックスアクセスメソッドに対して実装されているわけではありません。

各種のインデックスでは下記のように扱われます。

GiST とR-Treeインデックス

読み込み/書き込みアクセスに共有/排他モードのインデックスレベルロックを使います。ロックは文の処理完了後に解放されます。

ハッシュインデックス

読み込み/書き込みアクセスに共有/排他モードのページレベルロックを使います。ロックはページ処理後に解放されます。

ページレベルロックは、インデックスレベルのロックよりも同時実行性に優れていますが、デッドロックの対象ともなります。

B-treeインデックス

読み込み/書き込みアクセスに短期の共有/排他モードのページレベルロックを使います。ロックはインデックスのタプルが挿入/取り出しされるとただちに解放されます。

B-treeインデックスは、デッドロック状態になることなく、最も高い同時実行性を提供します。

つまり、B-treeインデックス型は同時実行アプリケーションに推奨されます。