インデックスロックインデックスロック (英: index locking)は、インデックスの整合性を維持するために使用される手法である。 概要データベースでは、インデックスはデータベースの一部であるデータ構造であり、データベース管理システムがユーザーデータへのアクセスを効率的に行えるようにする。インデックスデータは、ユーザーデータとは異なるシステムデータであり、主にポインタで構成される。データベースの変更(挿入、削除、修正操作)では、ユーザーデータへの正確なアクセスを維持するため、必要に応じてインデックスを更新する[1]。 インデックスロックはこの時に発動され、インデックスデータのうち更新が必要な該当する部分は、データベーストランザクション中に一時的にロックされる。さらに、システムの自己保守アクティビティのための特別なデータベースシステムトランザクション(ユーザーが呼び出すトランザクションではない)が発生することがある。 インデックスの一部がトランザクションによってロックされると、他のトランザクションがこのインデックス部分にアクセスできないようにブロックされることがある。ロックの種類と必要な操作によっては、変更や読み取りもブロックされることになる。インデックスロックプロトコルは、ファントム・リード現象 (Phantom Read) が発生しないことを保証する。 インデックスロックプロトコルの決まり事:
インデックスにアクセスするための特殊な並行性制御技術も存在する。これらの手法はインデックスの種類に依存しており、その構造を利用する。これらは通常、ユーザーデータに適用される一般的な同時実行制御方法をインデックスに適用するよりもはるかに効果的である。とても注目されており、広く研究されているB木の特殊な手法として"B木の並行性実行制御[2]" というものがあり、データベースのインデックスとしてよく使用される。 インデックスロックは、インデックスに同時にアクセスするスレッドを調整するために使用され、通常、ユーザーデータに対する一般的なトランザクションロックよりも有効期間が短くなる。専門家の文献では、それらはしばしば "ラッチ" と呼ばれる[2]。 関連項目脚注
|