ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

1942e8f8

Собственно несовместимый анализ


Эффект собственно несовместимого анализа также отличается от предыдущих примеров тем, что в смеси присутствуют две транзакции - одна длинная, другая короткая.

Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера. Пусть на всех счетах находятся одинаковые суммы, например, по $100. Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется.

Транзакция A

Время

Транзакция B

Сумма $250 по всем счетам неправильная - должно быть $300

Чтение счета
Собственно несовместимый анализ
и суммирование.
Собственно несовместимый анализ
Собственно несовместимый анализ
---
---
Собственно несовместимый анализ
Снятие денег со счета
Собственно несовместимый анализ
.
Собственно несовместимый анализ
---
Собственно несовместимый анализ
Помещение денег на счет
Собственно несовместимый анализ
.
Собственно несовместимый анализ
---
Собственно несовместимый анализ
Фиксация транзакции
Чтение счета
Собственно несовместимый анализ
и суммирование.
Собственно несовместимый анализ
Собственно несовместимый анализ
---
Чтение счета
Собственно несовместимый анализ
и суммирование.
Собственно несовместимый анализ
Собственно несовместимый анализ
---
Фиксация транзакции
Собственно несовместимый анализ
---
 

Результат. Хотя транзакция B все сделала правильно - деньги переведены без потери, но в результате транзакция A подсчитала неверную общую сумму.

Т.к. транзакции по переводу денег идут обычно непрерывно, то в данной ситуации следует ожидать, что главный бухгалтер никогда не узнает, сколько же денег в банке.


Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера. Пусть на всех счетах находятся одинаковые суммы, например, по $100. Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется.

Транзакция A

Время

Транзакция B

Ожидание…

Ожидание…

S-блокировка счета
Собственно несовместимый анализ
- успешна
Собственно несовместимый анализ
---
Чтение счета
Собственно несовместимый анализ
и суммирование.

Собственно несовместимый анализ
Собственно несовместимый анализ
---
---
Собственно несовместимый анализ
X-блокировка счета
Собственно несовместимый анализ
- успешна
---
Собственно несовместимый анализ
Снятие денег со счета
Собственно несовместимый анализ
.

Собственно несовместимый анализ
---
Собственно несовместимый анализ
X-блокировка счета
Собственно несовместимый анализ
- отвергается
---
Собственно несовместимый анализ
Ожидание…
S-блокировка счета
Собственно несовместимый анализ
- успешна
Собственно несовместимый анализ
Ожидание…
Чтение счета
Собственно несовместимый анализ
и суммирование.

Собственно несовместимый анализ
Собственно несовместимый анализ
Ожидание…
S-блокировка счета
Собственно несовместимый анализ
- отвергается
Собственно несовместимый анализ
Ожидание…
Ожидание…
Собственно несовместимый анализ
Ожидание…

Результат. Обе транзакции ожидают друг друга и не могут продолжаться. Возникла ситуация тупика.



Содержание раздела