9.5. Захват и освобождение объекта

 

Для обеспечения сериализации транзакций применяются методы «захвата» и «освобождения» объектов, производимого по инициативе транзакции: транзакция «захватывает» объект, что приводит к его блокировке для других транзакций, и освобождает его только при своем завершении. При этом захваты объектов несколькими транзакциями на чтение совместимы (т.е. нескольким транзакциям разрешается читать один и тот же объект), захват объекта одной транзакцией на чтение не совместим с захватом другой транзакцией того же объекта на запись, и захваты одного объекта разными транзакциями на запись не совместимы. Тем самым, выделяются два основных режима захватов:

-                    совместный режим - S (Shared), означающий разделяемый захват объекта и необходимый для выполнения операции чтения объекта;

-                    монопольный режим - X (eXclusive), означающий монопольный захват объекта и необходимый для выполнения операций записи, удаления и модификации.

 

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

При соблюдении двухфазного протокола основная проблема состоит в том, что следует считать объектом для захвата?

В контексте реляционных баз данных возможны следующие варианты:

-                    файл - физический (с точки зрения базы данных) объект, область хранения нескольких отношений и, возможно, индексов;

-                    таблица - логический объект, соответствующий множеству записей данного отношения;

-                    страница данных - физический объект, хранящий записи одного или нескольких отношений, индексную или служебную информацию;

-                    запись - элементарный физический объект базы данных.

 

Очевидно, что чем крупнее объект захвата, тем меньше захватов будет поддерживаться в системе, и на это, соответственно, будут тратиться меньшие накладные расходы. Более того, если выбрать в качестве уровня объектов для захватов файл или отношение, то будет решена даже проблема строк-призраков. Однако, при использовании для захватов крупных объектов возрастает вероятность конфликтов транзакций и тем самым уменьшается допускаемая степень их параллельного выполнения. Фактически, при укрупнении объекта синхронизационного захвата мы умышленно огрубляем ситуацию и видим конфликты в тех ситуациях, когда на самом деле конфликтов нет.

 

Таким образом, можно резюмировать, что транзакция – это законченный блок обращений к базе данных и некоторых действий над ней, для которого гарантируется выполнение четырех условий, так называемых свойств ACID (Atomicity, Consistency, Isolation, Durability).

-                  Атомарность – операции транзакции образуют неразделимый атомарный блок с определенным началом и концом. Этот блок либо выполняется от начала до конца, либо не выполняется вообще. Если в процессе выполнения транзакции произошел сбой, происходит откат к исходному состоянию.

-                  Согласованность – по завершении транзакции все задействованные объекты находятся в согласованном состоянии.

-                  Изолированность – одновременный доступ транзакций различных приложений к разделяемым объектам координируется таким образом, чтобы эти транзакции не влияли друг на друга.

-                  Долговременность – все изменения данных, осуществленные в процессе выполнения транзакции, не могут быть потеряны.

 

Контрольные вопросы

 

1.     Дайте определение транзакции

2.     Охарактеризуйте модели автоматического и управляемого выполнения транзакций.

3.     Назовите виды конфликтов при параллельном выполнении транзакций.

4.     Что такое сериализация транзакций?

5.     Охарактеризуйте методы «захвата» и «освобождения» объектов.

6.     Назовите основные режимы «захвата» объектов.

7.     Что такое журнал транзакций?

8.     Перечислите основные сервисные программные средства восстановления базы данных в составе СУБД.

 

 

К оглавлению

Назад к разделу "9.4. Сериализация транзакций"

Вперед к разделу "Глава 10.  Управление базами данных в СУБД"