InnoDB&隔离级别 - 不可重复读取是件坏事吗?

时间:2014-12-01 13:40:07

标签: mysql innodb isolation-level transaction-isolation table-locking

我正在阅读关于InnoDB's isolation levels的内容,这在很大程度上是有意义的,但我不明白的是为什么unrepeatable reads是一件坏事?不应该是相反的吗?

例如:

所以说我们有一个用于销售产品的库存列,每次有人购买商品我们会从列中获取1个商品,Repeatable readserializable隔离级别不会破坏数据完整性?

例如:

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

除非在运行更新时使用CORRECT值?

0 个答案:

没有答案