当我设置了 Read Committed 隔离级别并且在我的事务中进行了幻读时会发生什么。它是回滚并重新运行还是只是回滚?
问问题
894 次
3 回答
2
除非我对提交读隔离的理解是不可靠的(总是有可能的),否则提交读的全部意义在于你看不到幻影行 - 被另一个事务更改但更改从未提交并随后回滚的行。因此,在应用程序级别,使用 Committed Read 隔离,应用程序看不到幻影。
DBMS 在内部做什么取决于 DBMS。在 MVCC 系统中,您的事务将简单地读取事务开始时提交的版本。在锁定系统中,您可能会碰到另一个事务的锁,然后您自己的可能会跳过或阻塞。但是,AFAIK,DBMS 不会因为这个问题而回滚您的事务。
于 2010-11-18T16:06:44.470 回答
1
不,它不会导致任何内容回滚。发生的情况是您的代码看到了错误的数据,并且可能会基于此做出错误的决定,仅此而已。
于 2010-11-18T14:57:10.280 回答
0
您可能会看到陈旧的数据(仅当在第二次读取时,该行在该表中具有更新的列)。为了避免让您的数据变坏的事情,请使用乐观锁定。
于 2010-11-18T15:43:45.480 回答