Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Транзакции.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
13.22 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • согласованность — по завершении транзакции все задействованные объекты находятся в согласованном состоянии:

  • изолированность — одновременный доступ транзакций различ­ных приложений к разделяемым объектам координируется та­ким образом, чтобы эти транзакции не влияли друг на друга;

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

Контрольные вопросы и задания

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

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

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

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

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

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

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

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