首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server快照隔离的Oracle等效

SQL Server快照隔离的Oracle等效
EN

Stack Overflow用户
提问于 2014-01-29 02:58:56
回答 2查看 7.3K关注 0票数 6

在Microsoft中,我使用READ_COMMITTED_SNAPSHOT隔离

代码语言:javascript
复制
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON

在第1节中,将主体从4000更新到5000

代码语言:javascript
复制
BEGIN TRAN
Update MyTable Set Principal=5000 Where InvestorId=10 

现在在第2节,我说

代码语言:javascript
复制
Select Principal from MyTable where InvestorId=10

我得到4000,因为会话1事务没有提交。

如果我不使用READ_COMMITTED_SNAPSHOT隔离模式,并使用

  1. 读取提交隔离模式,那么我的会话2将继续等待
  2. 如果我使用READ_UNCOMMITTED隔离模式,那么我的会话2将提供5000 (相当于在select语句上使用nolock )。

在Oracle中,如果我执行等效的命令集,默认情况下它的行为就像设置了READ_COMMITTED_SNAPSHOT隔离模式一样。

我在microsoft文章中看到,在完成更新之前,快照隔离模式会写入tempdb。

-How默认情况下做到这一点吗?

-Is它也写到磁盘上吗?它会引起i/o问题吗?

-Is与SQL server不同的是Oracle中的默认锁定级别?

提前感谢您的帮助和时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-29 05:43:25

在Oracle中,READ_COMMITTED隔离级别是默认模式,即数据被写入数据文件(磁盘),只有在提交后才可供其他会话选择。为此,它使用撤消段。在执行select Oracle默认情况下使用行级别锁定时,它不会造成任何I/O问题。

您可以查看甲骨文DataBase概念的第9章和第10章以获得更多详细信息。

票数 4
EN

Stack Overflow用户

发布于 2018-06-28 08:47:12

在Oracle中,默认情况下它是一个非阻塞查询。类似于SQL快照隔离模式。锁定行为仍然存在,但不影响在受影响的行上开始事务之前只查询已提交数据的读取,从而避免了脏读取。见第9章-非阻塞查询。

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

https://stackoverflow.com/questions/21421188

复制
相关文章

相似问题

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