WEB开发网
开发学院数据库MSSQL Server SQL Server VS Oracle:并行处理方法对比 阅读

SQL Server VS Oracle:并行处理方法对比

 2008-09-09 10:03:21 来源:WEB开发网   
核心提示: SQL Server的解决方 案听起来很简单,但实际上其幕后为提供足够的系统高性能而采取了很多措施,SQL Server VS Oracle:并行处理方法对比(3),例如,如果你在同时修改多行数据,指定(NOLOCK)实际上只是得到了没有提交的数据,Oracle的方法则提供了数据的一致视图

SQL Server的解决方 案听起来很简单,但实际上其幕后为提供足够的系统高性能而采取了很多措施。例如,如果你在同时修改多行数据,SQL Server则会把数据锁定范围提升到页级别乃至锁定整个数据表,从而不必针对每一记录跟踪和维护各自的数据锁。

Oracle处理方法

下面我们再看看Oracle数据库是如何实施类似操作的。首先,我打开一个SQLPlus实例执行下列查询语句(这个例子可以在Oracle 9i中示例中找到)。这个实例称做查询实例:

select first_name, last_name, salary
from hr.employees
where
department_id = 20;

代码返回两行数据。

然后,再打开另一个SQLPlus实例——更新实例来执行以下命令:

SQL> update hr.employees
2 set salary = salary * 1.05
3 where
4 department_id = 20
5 /

代码执行后回复消息称两行数据已被更新。

注意,以上代码中并每有像在SQL Server示例那样键入“begin tran”字样的代码。Oracle 的SQLPlus隐含启用交易(你还可以模仿SQL Server的行为,设置“autocommit to on”自动地提交交易)。接下来我们在SQLPlus更新实例中再执行同查询实例一样的select语句。

结果清楚地表明:Michael和Pat的薪水都增加了,然而这个时候我还没有提交数据变更交易。

Oracle不需要用户等待数据更新实例中操作被提交,它径直返回Michael和Pat的查询信息,但实际上返回的是数据更新开始之前的数据视图!

这时候,熟悉SQL Server的人可能会说了,在查询中设置(NOLOCK)不也能达到同样的效果吗?可是,对SQL Server而言,在数据映像之前是不能获取数据的。指定(NOLOCK)实际上只是得到了没有提交的数据。Oracle的方法则提供了数据的一致视图,所有的信息都是针对交易的、基于存储数据快照的。

上一页  1 2 3 4  下一页

Tags:SQL Server VS

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