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

UptoLike

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

47
транзакцией В.
Транзакция А Время Транзакция В
-
Извлечение кортежа р
-
-
-
Обновление кортежа р
-
-
-
|
t
1
|
t
2
|
t
3
|
t
4
-
-
-
Извлечение кортежа р
-
-
-
Обновление кортежа р
-
Рис. 5.1 Потеря в момент времени t
4
результатов обновления,
выполненного транзакцией А
Проблема незафиксированной зависимости
Проблема незафиксированной зависимости появляется, если с помощью некоторой
транзакции осуществляется извлечение (или, что еще хуже, обновление) некоторого
кортежа, который в данный момент обновляется другой транзакцией, но это обновление
еще не закончено. Таким образом, если обновление не завершено, существует некоторая
вероятность того, что оно не будет завершено никогда. (Более того, в подобном случае
может быть выполнен возврат к предыдущему состоянию кортежа с отменой выполнения
транзакции.) В таком случае в первой транзакции будут принимать участие данные,
которых больше не существует (в том смысле, что ониникогдане существовали). Эта
ситуация показана на рис. 5.2 и 5.3.
В первом примере (рис. 5.2) транзакция А в момент времени t
2
встречается с
невыполненным обновлением (оно также называется невыполненным изменением). Затем
это обновление отменяется в момент времени t
3
. Таким образом, транзакция А
выполняется на основе фальшивого предположения, что кортеж р имеет некоторое значе-
ние в момент времени t
2
, тогда как на самом деле он имеет некоторое значение, суще-
ствовавшее еще в момент времени t
1
. В итоге после выполнения транзакции А будет
получен неверный результат. Кроме того, обратите внимание, что отмена выполнения
транзакции В может произойти не по вине транзакции B, а, например, в результате краха
системы. (К этому времени выполнение транзакции А может быть уже завершено, а
потому крушение системы не приведет к отмене выполнения транзакции.)
Транзакция А Время Транзакция В
-
-
-
Извлечение кортежа р
-
-
-
|
t
1
|
t
2
|
t
3
-
Обновление кортежа р
-
-
-
Отмена выполнения
транзакции
-
Рис. 5.2. Транзакция А становится зависимой от невыполненного
изменения в момент времени t2
транзакцией В.
          Транзакция А                      Время                     Транзакция В
                -                              |                            -
      Извлечение кортежа р                    t1                            -
                -                              |                            -
                -                             t2                   Извлечение кортежа р
                -                              |                            -
      Обновление кортежа р                    t3                            -
                -                              |                            -
                -                             t4                   Обновление кортежа р
                -                             ↓                             -

                Рис. 5.1 Потеря в момент времени t4 результатов обновления,
                                выполненного транзакцией А
Проблема незафиксированной зависимости
     Проблема незафиксированной зависимости появляется, если с помощью некоторой
транзакции осуществляется извлечение (или, что еще хуже, обновление) некоторого
кортежа, который в данный момент обновляется другой транзакцией, но это обновление
еще не закончено. Таким образом, если обновление не завершено, существует некоторая
вероятность того, что оно не будет завершено никогда. (Более того, в подобном случае
может быть выполнен возврат к предыдущему состоянию кортежа с отменой выполнения
транзакции.) В таком случае в первой транзакции будут принимать участие данные,
которых больше не существует (в том смысле, что они “никогда” не существовали). Эта
ситуация показана на рис. 5.2 и 5.3.
     В первом примере (рис. 5.2) транзакция А в момент времени t2 встречается с
невыполненным обновлением (оно также называется невыполненным изменением). Затем
это обновление отменяется в момент времени t3. Таким образом, транзакция А
выполняется на основе фальшивого предположения, что кортеж р имеет некоторое значе-
ние в момент времени t2, тогда как на самом деле он имеет некоторое значение, суще-
ствовавшее еще в момент времени t1. В итоге после выполнения транзакции А будет
получен неверный результат. Кроме того, обратите внимание, что отмена выполнения
транзакции В может произойти не по вине транзакции B, а, например, в результате краха
системы. (К этому времени выполнение транзакции А может быть уже завершено, а
потому крушение системы не приведет к отмене выполнения транзакции.)
          Транзакция А                      Время                    Транзакция В
                -                              |                           -
                -                             t1                 Обновление кортежа р
                -                              |                           -
       Извлечение кортежа р                   t2                           -
                -                              |                           -
                -                             t3                  Отмена выполнения
                -                             ↓                    транзакции
                                                                           -
              Рис. 5.2. Транзакция А становится зависимой от невыполненного
                               изменения в момент времени t2




                                                                                   47