Транзакции. Параллельное исполнение. Блокировки — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(3 проблемы)
(3 проблемы)
Строка 9: Строка 9:
  
 
[[Файл:4.jpg]]
 
[[Файл:4.jpg]]
 +
 +
Транзакция А подсчитывает остатки на счетах, а
 +
транзакция В переводит сумму 10 со счета 3 на счет 1. Очевидно, что результат, вырабо-
 +
танный транзакцией А, — 110, является неправильным; если бы в ходе своего дальней-
 +
шего выполнения транзакция А снова записала этот результат в базу данных, то фактически
 +
оставила бы базу данных в противоречивом состоянии 1 . По сути, транзакция А обнару-
 +
жила несовместимое состояние базы данных и поэтому выполнила анализ несовмести-
 +
мости. Обратите внимание на различие между этим примером и предыдущим: в данном
 +
случае не возникает проблема зависимости транзакции А от незафиксированного изме-
 +
нения, поскольку в зафиксировала все свои обновления еще до того, как А прочитала
 +
значение АСС 3.

Версия 17:55, 14 января 2016

3 проблемы

  • Проблема потерянного обновления.

2.jpg

  • Проблема зависимости от незафиксированных результатов.

3.jpg

  • Проблема анализа несовместимости.

4.jpg

Транзакция А подсчитывает остатки на счетах, а транзакция В переводит сумму 10 со счета 3 на счет 1. Очевидно, что результат, вырабо- танный транзакцией А, — 110, является неправильным; если бы в ходе своего дальней- шего выполнения транзакция А снова записала этот результат в базу данных, то фактически оставила бы базу данных в противоречивом состоянии 1 . По сути, транзакция А обнару- жила несовместимое состояние базы данных и поэтому выполнила анализ несовмести- мости. Обратите внимание на различие между этим примером и предыдущим: в данном случае не возникает проблема зависимости транзакции А от незафиксированного изме- нения, поскольку в зафиксировала все свои обновления еще до того, как А прочитала значение АСС 3.