在Microsoft SQL Server中,我使用READ_COMMITTED_SNAPSHOT隔离级别。
我得到了4000,因为会话1事务没有提交。
如果我不使用READ_COMMITTED_SNAPSHOT隔离模式,并且使用
我在微软文章中读到,快照隔离模式在更新完成之前会写入tempdb。
- Oracle如何实现这一点?
- 它是否也写入磁盘?这会导致I/O问题吗?
- Oracle中的默认锁定级别与SQL Server不同吗?
感谢您的帮助和时间。
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON
在第一次会话中,将贷款本金从4000更新为5000。
BEGIN TRAN
Update MyTable Set Principal=5000 Where InvestorId=10
现在进入第二节,我说
Select Principal from MyTable where InvestorId=10
我得到了4000,因为会话1事务没有提交。
如果我不使用READ_COMMITTED_SNAPSHOT隔离模式,并且使用
- READ COMMITTED ISOLATION模式,那么我的第二个会话将一直等待。
- 如果我使用READ_UNCOMMITTED隔离模式,那么我的第二个会话将返回5000(相当于在select语句上使用nolock)
我在微软文章中读到,快照隔离模式在更新完成之前会写入tempdb。
- Oracle如何实现这一点?
- 它是否也写入磁盘?这会导致I/O问题吗?
- Oracle中的默认锁定级别与SQL Server不同吗?
感谢您的帮助和时间。
POST
,而不是READ_UNCOMMITTED ISOLATION
吗? - Anjan Biswas