Блокировка индекса
В базах данных индекс — это структура данных, часть базы данных, используемая системой баз данных для эффективного доступа к пользовательским данным . Индексные данные — это системные данные, отличные от пользовательских данных, и состоят в основном из указателей . Изменения в базе данных (путем операций вставки, удаления или изменения) могут потребовать обновления индексов для обеспечения точного доступа к пользовательским данным. [ 1 ] Блокировка индекса — это метод, используемый для поддержания целостности индекса. Часть индекса блокируется во время транзакции базы данных, когда транзакция обращается к этой части в результате попытки доступа к связанным пользовательским данным. Кроме того, для поддержки и изменения индекса могут быть вызваны специальные транзакции системы базы данных (не транзакции, вызываемые пользователем) в рамках действий по самообслуживанию системы. Когда часть индекса заблокирована транзакцией, другим транзакциям может быть заблокирован доступ к этой части индекса (заблокировано ее изменение и даже чтение, в зависимости от типа блокировки и необходимой операции). Протокол блокировки индекса гарантирует, что явление фантомного чтения не произойдет. Протокол блокировки индекса гласит:
- Каждое отношение должно иметь хотя бы один индекс.
- Транзакция может получить доступ к кортежам только после того, как найдет их по одному или нескольким индексам отношения.
- Транзакция Ti, выполняющая поиск, должна заблокировать все конечные узлы индекса, к которым она имеет доступ, в S-режиме, даже если листовой узел не содержит кортежа, удовлетворяющего поиску по индексу (например, для запроса диапазона ни один кортеж в листе не является в ассортименте)
- Транзакция Ti, которая вставляет, обновляет или удаляет кортеж ti в отношении r, должна обновить все индексы до r и получить монопольные блокировки на всех конечных узлах индекса, на которые влияет вставка/обновление/удаление.
- правила протокола двухфазной блокировки . Необходимо соблюдать
специализированные методы управления параллелизмом Для доступа к индексам существуют . Эти методы зависят от типа индекса и используют преимущества его структуры. Обычно они гораздо более эффективны, чем применение к индексам общих методов управления параллелизмом, применяемых к пользовательским данным. Известные и широко исследованные специализированные методы для B-деревьев ( управление параллелизмом B-деревьев). [ 2 ] ), которые регулярно используются в качестве индексов базы данных.
Блокировки индексов используются для координации потоков, одновременно обращающихся к индексам, и обычно имеют более короткий срок действия, чем обычные блокировки транзакций пользовательских данных. В профессиональной литературе их часто называют защелками . [ 2 ]
См. также
[ редактировать ]- Индекс базы данных
- Управление параллелизмом
- Блокировка (база данных)
- Управление параллелизмом B-дерева
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Герхард Вейкум , Готфрид Воссен (2001): Транзакционные информационные системы, глава 9, Elsevier, ISBN 1-55860-508-8
- ^ Перейти обратно: а б Гетц Грефе (2010): «Обзор методов блокировки B-дерева» Транзакции ACM в системах баз данных (TODS), том 35, выпуск 3, июль 2010 г. (также HPL-2010-9 , архивировано 16 марта 2012 г. на Wayback Machine , Лаборатории HP).