При параллельном выполнении транзакций могут возникать следующие аномалии:
Потерянное обновление (Lost Update): Одна транзакция перезаписывает изменения другой транзакции до того, как эти изменения были зафиксированы.
Время | Транзакция 1 | Транзакция 2 |
---|---|---|
t1 | Читает значение Валанс (например, 100) | |
t2 | Читает значение Валанс (например, 100) | |
t3 | Увеличивает Валанс на 10 (Валанс = 110) | |
t4 | Увеличивает Валанс на 20 (Валанс = 120) | |
t5 | Фиксирует изменения (Валанс становится 110) | |
t6 | Фиксирует изменения (Валанс становится 120) |
Результат: Несмотря на два увеличения, конечное значение Валанс равно 120, а не 130. Увеличение от Транзакции 1 потеряно.
Грязное чтение (Dirty Read): Одна транзакция читает незафиксированные изменения другой транзакции. Если транзакция, сделавшая изменения, откатится, прочитанные данные окажутся недействительными.
Время | Транзакция 1 | Транзакция 2 |
---|---|---|
t1 | Начинает изменение Валанс (100 -> 110) | |
t2 | Читает Валанс (получает 110) | |
t3 | Откатывает изменение (Валанс возвращается к 100) | |
t4 | Использует Валанс = 110 в расчетах, хотя фактическое значение 100 |
Результат: Транзакция 2 основыв
При параллельном выполнении транзакций могут возникать следующие аномалии:
Потерянное обновление (Lost Update): Одна транзакция перезаписывает изменения другой транзакции до того, как эти изменения были зафиксированы.
Время | Транзакция 1 | Транзакция 2 |
---|---|---|
t1 | Читает значение Валанс (например, 100) | |
t2 | Читает значение Валанс (например, 100) | |
t3 | Увеличивает Валанс на 10 (Валанс = 110) | |
t4 | Увеличивает Валанс на 20 (Валанс = 120) | |
t5 | Фиксирует изменения (Валанс становится 110) | |
t6 | Фиксирует изменения (Валанс становится 120) |
Результат: Несмотря на два увеличения, конечное значение Валанс равно 120, а не 130. Увеличение от Транзакции 1 потеряно.
Грязное чтение (Dirty Read): Одна транзакция читает незафиксированные изменения другой транзакции. Если транзакция, сделавшая изменения, откатится, прочитанные данные окажутся недействительными.
Время | Транзакция 1 | Транзакция 2 |
---|---|---|
t1 | Начинает изменение Валанс (100 -> 110) | |
t2 | Читает Валанс (получает 110) | |
t3 | Откатывает изменение (Валанс возвращается к 100) | |
t4 | Использует Валанс = 110 в расчетах, хотя фактическое значение 100 |
Результат: Транзакция 2 основыв
Register or sign in to get access to full answers for all questions from the question bank.