InnoDB и уровни изоляции - не повторяется ли плохо?
Я читал о InnoDB's
уровни изоляции и это имеет смысл по большей части, но то, что я не понимаю, почему unrepeatable reads
плохо? Не должно ли быть наоборот?
Например:
Допустим, у нас был столбец запасов для продажи продуктов, и каждый раз, когда кто-то покупал товар, мы брали 1 товар из столбца с Repeatable read
или же serializable
уровни изоляции не повредят ли это целостности данных?
Например:
TX A: start transaction;
TX B: set session transaction isolation level repeatable read;
TX B: start transaction;
TX A: select stock from products; -- val = 8
TX B: select stock from products; -- val = 8
TX A: update products set stock = stock - 1; -- val = 7
TX B: select stock from products; -- val = 8
TX A: commit
TX B: select stock from products; -- val = 8, incorrect!
TX B: commit;
TX B: select stock from products; -- val = 7
Разве он использует значение ПРАВИЛЬНО при запуске обновления?