ВУЗ:
Составители:
Рубрика:
48
Транзакция А Время Транзакция В
-
-
-
Обновление кортежа р
-
-
-
|
t
1
|
t
2
|
t
3
↓
-
Обновление кортежа р
-
-
-
Отмена выполнения
транзакции
-
Рис. 5.3. Транзакция А обновляет невыполненное изменение в момент времени t2,
и результаты этого обновления утрачиваются в момент времени t3
Второй пример, приведенный на рис. 5.3, иллюстрирует более худший случай. Не
только транзакция А становится зависимой от изменения, не выполненного в момент
времени t
2
, но также в момент времени t
3
фактически утрачивается результат обновления,
поскольку отмена выполнения транзакции В в момент времени t
3
приводит к
восстановлению кортежа р к исходному значению в момент времени t
1
. Это еще один
вариант проблемы потери результатов обновления.
Проблема несовместимого анализа
На рис. 5.4 показаны транзакции А и B, которые выполняются для кортежей со сче-
тами (СЧЕТ). При этом транзакция А суммирует балансы, транзакция В производит
перевод суммы 10 со счета 3 на счет 1. Полученный в итоге транзакции А результат 110,
очевидно, неверен, и если он будет записан в базе данных, то в ней может возникнуть
проблема несовместимости. В таком случае говорят, что транзакция А встретилась с
несовместимым состоянием и на его основе был выполнен несовместимый анализ.
Обратите внимание на следующее различие между этим примером и предыдущим: здесь
не идет речь о зависимости транзакции А от транзакции B, так как транзакция B
выполнила все обновления до того, как транзакция А извлекла СЧЕТ 3.
Блокировка
Описанные выше проблемы могут быть разрешены с помощью методики управления
параллельным выполнением процессов под названием блокировка или
синхронизационные захваты. Ее основная идея очень проста: в случае, когда для
выполнения некоторой транзакции необходимо, чтобы некоторый объект (обычно это
кортеж базы данных) не изменялся непредсказуемо и без ведома этой транзакции (как это
обычно бывает), такой объект блокируется. Таким образом, эффект блокировки состоит в
том, чтобы “заблокировать доступ к этому объекту со стороны других транзакций”, а
значит, предотвратить непредсказуемое изменение этого объекта. Следовательно, первая
транзакция в состоянии выполнить всю необходимую обработку с учетом того, что
обрабатываемый объект остается в стабильном состоянии настолько долго, насколько это
нужно.
Описание функционирования блокировки:
1. Прежде всего, предположим, что в системе поддерживается два типа блокировок:
блокировка без взаимного доступа (монопольная блокировка), называемая Х-
блокировкой (Х locks - eXlusive locks), и блокировка с взаимным доступом,
называемая S-блокировкой (S locks - Shared locks). Надо заметить, что X- и S-
блокировки иногда называют блокировками записи и чтения соответственно.
Здесь предполагается, что X- и S-блокировки единственно возможные, хотя ниже
в этой главе приводятся примеры блокировок других типов. Кроме того, до-
пустим, что в данном случае кортежи являются единственным типом
Транзакция А Время Транзакция В
- | -
- t1 Обновление кортежа р
- | -
Обновление кортежа р t2 -
- | -
- t3 Отмена выполнения
- ↓ транзакции
-
Рис. 5.3. Транзакция А обновляет невыполненное изменение в момент времени t2,
и результаты этого обновления утрачиваются в момент времени t3
Второй пример, приведенный на рис. 5.3, иллюстрирует более худший случай. Не
только транзакция А становится зависимой от изменения, не выполненного в момент
времени t2, но также в момент времени t3 фактически утрачивается результат обновления,
поскольку отмена выполнения транзакции В в момент времени t3 приводит к
восстановлению кортежа р к исходному значению в момент времени t1. Это еще один
вариант проблемы потери результатов обновления.
Проблема несовместимого анализа
На рис. 5.4 показаны транзакции А и B, которые выполняются для кортежей со сче-
тами (СЧЕТ). При этом транзакция А суммирует балансы, транзакция В производит
перевод суммы 10 со счета 3 на счет 1. Полученный в итоге транзакции А результат 110,
очевидно, неверен, и если он будет записан в базе данных, то в ней может возникнуть
проблема несовместимости. В таком случае говорят, что транзакция А встретилась с
несовместимым состоянием и на его основе был выполнен несовместимый анализ.
Обратите внимание на следующее различие между этим примером и предыдущим: здесь
не идет речь о зависимости транзакции А от транзакции B, так как транзакция B
выполнила все обновления до того, как транзакция А извлекла СЧЕТ 3.
Блокировка
Описанные выше проблемы могут быть разрешены с помощью методики управления
параллельным выполнением процессов под названием блокировка или
синхронизационные захваты. Ее основная идея очень проста: в случае, когда для
выполнения некоторой транзакции необходимо, чтобы некоторый объект (обычно это
кортеж базы данных) не изменялся непредсказуемо и без ведома этой транзакции (как это
обычно бывает), такой объект блокируется. Таким образом, эффект блокировки состоит в
том, чтобы “заблокировать доступ к этому объекту со стороны других транзакций”, а
значит, предотвратить непредсказуемое изменение этого объекта. Следовательно, первая
транзакция в состоянии выполнить всю необходимую обработку с учетом того, что
обрабатываемый объект остается в стабильном состоянии настолько долго, насколько это
нужно.
Описание функционирования блокировки:
1. Прежде всего, предположим, что в системе поддерживается два типа блокировок:
блокировка без взаимного доступа (монопольная блокировка), называемая Х-
блокировкой (Х locks - eXlusive locks), и блокировка с взаимным доступом,
называемая S-блокировкой (S locks - Shared locks). Надо заметить, что X- и S-
блокировки иногда называют блокировками записи и чтения соответственно.
Здесь предполагается, что X- и S-блокировки единственно возможные, хотя ниже
в этой главе приводятся примеры блокировок других типов. Кроме того, до-
пустим, что в данном случае кортежи являются единственным типом
48
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »
