ПРОБЛЕМЫ ПАРАЛЛЕЛИЗМА

Если транзакции не удовлетворяют свойствам АСИД, при параллельной работе таких транзакций возможно возникновение следующих проблем:

  • • потеря результатов обновления;
  • • незафиксированные зависимости;
  • • несовместимый анализ.

Рассмотрим эти проблемы подробнее.

Потеря результатов обновления

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

Порядок выполнения транзакций при их параллельной работе может быть таким, какой представлен на рис. 8.3.

Транзакция 1 Транзакция 2

Извлечение Р -И

^2 Извлечение Р

Рис. 8.3. Потеря результатов

Обновление Р 43 обновления

44 Обновление Р

t

Если теперь после момента времени t4 транзакции завершатся успешно, каким будет состояние записи Р? В зависимости от того, какая из двух транзакций завершится позднее, будут утеряны изменения, сделанные ранее завершенной транзакцией.

Незафиксированные зависимости

Здесь можно, в свою очередь, выделить две ситуации, каждая из которых определяется тем, что одна из двух параллельно выполняющихся транзакций завершается откатом (ROLLBACK).

Чтение грязных данных. Порядок выполнения транзакций при их параллельной работе представлен на рис. 8.4.

Транзакция 1

Извлечение Р

Транзакция 2 4і Обновление Р

Рис. 8.4. Чтение грязных данных

-із ПОІХВАСК

Транзакция 1 прочитала данные, измененные транзакцией 2, но в последующем транзакция 2 отменила свои изменения. Какие данные обрабатывает транзакция 1 ?

Отсутствие потерянных изменений. Порядок выполнения транзакций при их параллельной работе представлен на рис. 8.5.

Транзакция 1

Обновление Р

Транзакция 2 -І1 Обновление Р

4з ІЮІХВАСК

Рис. 8.5. Потерянные изменения

Транзакция 1 изменяет данные после того, как эти данные были изменены транзакцией 2. Если теперь транзакция 2 аннулирует свои изменения, состояние БД будет восстановлено таким, каким оно было перед началом выполнения транзакции 2. А значит, изменения, сделанные транзакцией 1, также будут аннулированы.

 
< Пред   СОДЕРЖАНИЕ     След >