Тем самым, выделяются два основных режима захватов:
· совместный режим – S(Shared), означающий разделяемый захват объекта и необходимый для выполнения операции чтения объекта;
· монопольный режим – X(eXclusive), означающий монопольный захват объекта и необходимый для выполнения операций записи, удаления и модификации.
В СУБД, основанных на архитектуре «клиент–сервер», наиболее распространен подход, реализующий соблюдение протокола двухфазного блокированияобъектов БД. Перед выполнением любой операции над объектом БД от имени транзакции запрашивается захват объекта в совместном или монопольном режиме. Выполнение транзакции разбивается на две фазы:
· фаза роста – накопление захватов (установление блокировок);
· фазафиксации или отката – освобождение захватов (снятие блокировок).
Реализуемость транзакций гарантируется, если блокировки, относящиеся к одновременно выполняемым транзакциям, удовлетворяют правилу: «Ни одна блокировка от имени какой-либо транзакции не должна устанавливаться, пока не будет снята ранее установленная блокировка».
В реляционных БД объектами для захвата могут быть:
· файл – физический (с точки зрения БД) объект, область хранения нескольких отношений и индексов;
· таблица – логический объект, соответствующий множеству записей данного отношения;
· страница данных – физический объект, хранящий записи одного или нескольких отношений, индексную или служебную информацию;
· запись – элементарный физический объект БД.
Блокировка на уровне поля не реализована, поскольку приводит к перегрузке менеджера блокировок и к падению производительности системы.
Выбор вида блокировки и объекта зависит от того, какая операция выполняется, как много таких операций, каковы ограничения по времени обработки. Например, если осуществляется массовая корректировка файла, то лучше открыть его в эксклюзивном режиме, чем последовательно блокировать каждую запись.
предыдущаяследующая