практика 'Уровни изоляции'
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
||||
-- Задание 1: Разбери ситуацию
|
||||
-- 1) 200
|
||||
-- 2) 100
|
||||
-- 3) Результаты разные тк на уровне Read Committed разрешено неповторяемое чтение, а на уровне Repeatable Read неповторяемое чтенине запрщено, и мы видим то, что было на момент начала транщакции.
|
||||
|
||||
-- Задание 2: Практика
|
||||
-- При Repeatable Read, я увидел во втором select значение - 100, потому что изменение произошли до того как завершилась транзакция с чтением, и зафиксировалось то значение которые было на момент начала транзакции с чтением
|
||||
-- При Read Committed, во втором select было значение - 200, тк этот уровень изолированности подразумевает чтение закоммиченных(другой транзакцией) данных даже если текущая транзакция ещё не завершена
|
||||
|
||||
-- Задание 3: Найди ошибку
|
||||
-- 1) Так произошло потому, что выбран некорректный уровень изоляции.
|
||||
-- 2) Тут подойдет serializavle.
|
||||
-- 3) Решить эту проблему без смены изоляции можно с помощью проверки баланса перед списанием, и если денег на балансе будет недостаточно, то откатить транзакцию. Такое решение подойдет только с уровнем изоляции Read Commited, для Repeatable Read такой способ уже не подойдет.
|
||||
Reference in New Issue
Block a user