В базах данных индекс — это структура данных, часть базы данных, используемая системой базы данных для эффективного доступа к пользовательским данным . Индексные данные — это системные данные, отличные от пользовательских данных, и в основном состоят из указателей . Изменения в базе данных (путем операций вставки, удаления или изменения) могут потребовать обновления индексов для поддержания точного доступа к пользовательским данным. [1] Блокировка индекса — это метод, используемый для поддержания целостности индекса. Часть индекса блокируется во время транзакции базы данных, когда эта часть обращается к транзакции в результате попытки доступа к связанным пользовательским данным. Кроме того, специальные транзакции системы базы данных (не вызываемые пользователем транзакции) могут вызываться для поддержания и изменения индекса в рамках деятельности по самообслуживанию системы. Когда часть индекса блокируется транзакцией, другие транзакции могут быть заблокированы от доступа к этой части индекса (заблокированы от изменения и даже от чтения, в зависимости от типа блокировки и необходимой операции). Протокол блокировки индекса гарантирует, что явление фантомного чтения не возникнет. Протокол блокировки индекса гласит:
[1]
Существуют специализированные методы управления параллелизмом для доступа к индексам. Эти методы зависят от типа индекса и используют его структуру. Они, как правило, намного эффективнее, чем применение к индексам общих методов управления параллелизмом, применяемых к пользовательским данным. Известными и широко исследованными являются специализированные методы для B-деревьев (управление параллелизмом B-Tree [2] ), которые регулярно используются в качестве индексов базы данных.
Блокировки индексов используются для координации потоков, одновременно обращающихся к индексам, и обычно они короче обычных блокировок транзакций на пользовательских данных. В профессиональной литературе их часто называют защелками . [2]