在Microsoft中,我使用READ_COMMITTED_SNAPSHOT隔离
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON在第1节中,将主体从4000更新到5000
BEGIN TRAN
Update MyTable Set Principal=5000 Where InvestorId=10 现在在第2节,我说
Select Principal from MyTable where InvestorId=10我得到4000,因为会话1事务没有提交。
如果我不使用READ_COMMITTED_SNAPSHOT隔离模式,并使用
在Oracle中,如果我执行等效的命令集,默认情况下它的行为就像设置了READ_COMMITTED_SNAPSHOT隔离模式一样。
我在microsoft文章中看到,在完成更新之前,快照隔离模式会写入tempdb。
-How默认情况下做到这一点吗?
-Is它也写到磁盘上吗?它会引起i/o问题吗?
-Is与SQL server不同的是Oracle中的默认锁定级别?
提前感谢您的帮助和时间。
发布于 2014-01-29 05:43:25
在Oracle中,READ_COMMITTED隔离级别是默认模式,即数据被写入数据文件(磁盘),只有在提交后才可供其他会话选择。为此,它使用撤消段。在执行select Oracle默认情况下使用行级别锁定时,它不会造成任何I/O问题。
您可以查看甲骨文DataBase概念的第9章和第10章以获得更多详细信息。
发布于 2018-06-28 08:47:12
在Oracle中,默认情况下它是一个非阻塞查询。类似于SQL快照隔离模式。锁定行为仍然存在,但不影响在受影响的行上开始事务之前只查询已提交数据的读取,从而避免了脏读取。见第9章-非阻塞查询。
https://stackoverflow.com/questions/21421188
复制相似问题