首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用默认(已提交读)隔离模式时,如何确保原子规则?

当使用默认(已提交读)隔离模式时,如何确保原子规则?
EN

Stack Overflow用户
提问于 2020-05-31 16:43:53
回答 2查看 44关注 0票数 0

事务的一个重要属性是原子性。

默认模式为已提交读取。这可以防止脏读。但是我们有可重复读取和幻影行的问题。

当使用默认(已提交读)隔离模式时,如何确保原子规则?

示例-在tran1中,我从table1中读取值。当tran1仍在运行时,我启动tran2并在table1中更新相同的值。所以tran1的价值已经过时了。

EN

回答 2

Stack Overflow用户

发布于 2020-05-31 17:53:00

Read committed isolation模式不会阻止在事务仍处于打开状态时更新事务中已读取的行。

如果要防止这种情况,则需要将隔离级别设置为可重复读取(或SERIALIZABLE)。或者,您可以将数据库的READ_COMMITTED_SNAPSHOT选项设置为ON。

票数 0
EN

Stack Overflow用户

发布于 2020-12-29 11:15:09

根据这个article,'read committed‘不能保证’does‘:

不幸的是,当使用读提交时,这个假设是不正确的。read committed隔离级别保证只读取已提交的数据;它不能保证将返回多少已提交的数据,并且容易出现不一致的分析问题。如果您希望避免不一致的分析,则需要提高隔离级别(如果使用锁定),或者更改为read committed的版本控制(甚至快照隔离)。

wikipedia说:

在此隔离级别中可能会发生

不可重复读取现象)

但我不认为维基百科意味着它打破了“原子性”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62113673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档