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