インデックスロック
データベースでは、インデックスはデータベースの一部であるデータ構造であり、データベース管理システムがユーザーデータへのアクセスを効率的に行えるようにする。インデックスデータは、ユーザーデータとは異なるシステムデータであり、主にポインタで構成される。データベースの変更(挿入、削除、修正操作)では、ユーザーデータへの正確なアクセスを維持するため、必要に応じてインデックスを更新する。
インデックスロックはこの時に発動され、インデックスデータのうち更新が必要な該当する部分は、データベーストランザクション中に一時的にロックされる。さらに、システムの自己保守アクティビティのための特別なデータベースシステムトランザクション(ユーザーが呼び出すトランザクションではない)が発生することがある。
インデックスの一部がトランザクションによってロックされると、他のトランザクションがこのインデックス部分にアクセスできないようにブロックされることがある。ロックの種類と必要な操作によっては、変更や読み取りもブロックされることになる。インデックスロックプロトコルは、ファントム・リード現象 (Phantom Read) が発生しないことを保証する。
インデックスロックプロトコルの決まり事:
すべてのリレーションには、少なくとも1つのインデックスが必要。
トランザクションは、リレーションの1つ以上のインデックスを介してタプルを見つけた後でのみ、タプルにアクセスできる。