Распределенная обработка данных. Найханова Л.В. - 48 стр.

UptoLike

Составители: 

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