WEB开发网
开发学院数据库Oracle Oracle与SQL Server事务处理的比较 阅读

Oracle与SQL Server事务处理的比较

 2009-04-16 13:13:08 来源:WEB开发网   
核心提示: 三.事务隔离级别在SQL92标准中,事务隔离级别分为四种,Oracle与SQL Server事务处理的比较(3),分别为:Read Uncommitted、Read Committed、Read Repeatable、Serializable,其中Read Uncommitted与Read

三.事务隔离级别

在SQL92标准中,事务隔离级别分为四种,分别为:Read Uncommitted、Read Committed、Read Repeatable、Serializable,其中Read Uncommitted与Read Committed为语句级别的,而Read Repeatable与Serializable是针对事务级别的。

在Oracle和SQL Server中设置事务隔离级别的语句是相同的,都使用SQL92标准语法,即:

Set Transaction Isolation Level Read Committed

上面示例中的Read Committed可以被替换为其他三种隔离级别中的任意一种。

1.SQL Server中的隔离级别及实现机制

在SQL Server中提供了所有这四种隔离级别。

下面我们讨论在SQL Server中,这几种隔离级别的含义及其实现方式。

Read Uncommitted:一个会话可以读取其他事务未提交的更新结果,如果这个事务最后以回滚结束,这时的读取结果就可能是错误的,所以多数的数据库应用都不会使用这种隔离级别。

Read Committed:这是SQL Server的缺省隔离级别,设置为这种隔离级别的事务只能读取其他事务已经提交的更新结果,否则,发生等待,但是其他会话可以修改这个事务中被读取的记录,而不必等待事务结束,显然,在这种隔离级别下,一个事务中的两个相同的读取操作,其结果可能不同。

Read Repeatable:在一个事务中,如果在两次相同条件的读取操作之间没有添加记录的操作,也没有其他更新操作导致在这个查询条件下记录数增多,则两次读取结果相同。换句话说,就是在一个事务中第一次读取的记录保证不会在这个事务期间发生改变。SQL Server是通过在整个事务期间给读取的记录加锁实现这种隔离级别的,这样,在这个事务结束前,其他会话不能修改事务中读取的记录,而只能等待事务结束,但是SQL Server不会阻碍其他会话向表中添加记录,也不阻碍其他会话修改其他记录。

上一页  1 2 3 4 5  下一页

Tags:Oracle SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接