Oracle VS Sql Server

一、Oracel 是多进程,多线程;SQL Server 是单进程,多线程 

回应:

多线程的数据库系统与多进程的数据库系统相比,装入Microsoft SQL Server时,仅仅启动一个进程,而每个用户有各自的线程,这种结构需要的资源比多进程系统少得多。从而可以更好地将资源应用在数据管理与操作上。

Microsoft SQL Server的强大功能还表现在其保证数据的完整性,有了服务器维护数据的完整性,就没有再必要依赖各个部门的程序员,他们能力各异,编写的应用程序也很难统一, 所以使用统一的数据库环境进行数据完整性保护,自我保护能力比较起多进程多线程的数据库系统要强。

SQL Server支持的多线程原理上与多进程类似 . 不同的是多线程数据库引擎自己负责各个应用程序占用cpu的时间,不依赖于操作系统。

总而言之,多进程方式比单进程多线程需要消耗更多的资源,同时在通讯上消耗也比较大,对并发的支持不如多线程模式 

二、Oracle支持联机备份,SQL Server不支持基于块介质的数据库备份

回应:

SQL Server 支持联机备份,在SQL Server 2005中同样支持对块介质(页面级)的在线或离线恢复。

三、Oracle可以透明地实现分布式事务,SQL Server 空白 

回应:

SQL Server 对分布式处理技术有非常好的支持

分布式事务跨越两个或多个称为资源管理器的服务器。称为事务管理器的服务器组件必须在资源管理器之间协调事务管理。如果分布式事务由 Microsoft 分布式事务处理协调器 (MS DTC) 之类的事务管理器或其他支持 X/Open XA 分布式事务处理规范的事务管理器来协调,则每个 SQL Server Database Engine 实例都可以作为资源管理器来运行。

跨越两个或多个数据库的单个数据库引擎 实例中的事务实际上是分布式事务。该实例对分布式事务进行内部管理;对于用户而言,其操作就像本地事务一样。

对于应用程序而言,管理分布式事务很像管理本地事务。当事务结束时,应用程序会请求提交或回滚事务。不同的是,分布式提交必须由事务管理器管理,以尽量避免出现因网络故障而导致事务由某些资源管理器成功提交,但由另一些资源管理器回滚的情况。通过分两个阶段(准备阶段和提交阶段)管理提交进程可避免这种情况,这称为两阶段提交 (2PC)

数据库引擎 应用程序可以通过 Transact-SQL 或数据库 API 来管理分布式事务 

此外,SQL Server还提供相应的复制机制,包括快照复制,点对点复制,事务复制与合并复制,对集中/分布等环境可以提供丰富的数据同步支持

四、支持并行计算:Oracle 不仅并行查询而且支持分区内并行处理能力;SQL Server  采用Shared Notiong 结构,不能实现分区内并行处理、只有有限支持并行查询语句,不支持并行DML

回应:

SQL Server 2005 可提供并行查询,来优化拥有多个微处理器 (CPU) 的计算机的查询执行和索引操作。由于允许 SQL Server 使用多个操作系统线程来并行执行查询或索引操作,从而 SQL Server 可以快速高效地完成操作。

SQL Server 2005 自动检测每个实例的并行查询执行或索引数据定义语言 (DDL) 操作的最佳并行度

在并行查询执行计划中,插入、更新和删除运算符是串行执行的。不过,UPDATE DELETE 语句的 WHERE 子句,或者 INSERT 语句的 SELECT 部分可以并行执行。之后,实际的数据更改将串行应用到数据库。也就是说对于DMLSQL 可以部分并行。

 

五、并行处理技术:Oracle 支持几乎所有的Cluster群机;SQL Server 目前无真正的集群,其并行系统实际上式Federated数据库,具有很低的性能和可扩展性

回应:

这个问题,没有必要正面回答Oracle对集群的支持,但是可以讨论对高可用性支持的机制。

对于高性能比较:

          并行计算与并行处理需要达到的目的是提高系统性能。

          SQLServer 提供了广泛的并行性

        创建索引并行

        并行数据装载

        并行查询处理

        并行数据检索

        备份并行

        并行数据完整性验证

          除并行支持外,SQL Server 同等规模的服务器下,性能要优于Oracle

          数据库专业评测机构(http://www.tpc.org/)对数据库每分钟数据处理能力tpmC评测结果:

        微软SQL Server 2005 每分钟数据处理数:1,231,433

        Oracle 10g每分钟数据处理数:1,008,144

        微软SQL Server 2005占据第一位,每分钟处理超出Oracle 10g 20多万次

          价格性能比(Price/tpmC

        微软SQL Server 20054.82美元

        Oracle 10g8.33美元

        微软SQL Server 2005价性比最低,比Oracle低:3.51美元

 

 

高可用性比较

SQL Server 2005多数据主流数据库产品,如IBMDB2相同,采用share-nothing技术实现故障转移集群,在这种模式下,如果只采用active/standby模式,不能够实现两台物理服务器同时写共享磁盘阵列,但是硬件配置适宜的条件下,SQL Server 2005 支持share-nothing技术下的active-active实现。

对于Oracle 采用share-data模式,随着节点的增加,其内部通讯带来的系统开销(cache同步等),是在OLTP系统上是一个非常令人担心的问题,对于OracleRAC对于大型OLTP带来的内部通讯开销非常庞大,在四节点的群集基准测试中,全局缓存服务消耗了每个服务器12%CPU 资源。

应该注意的是,在业界的基准测试TPC-C中,Oracle 获得的最优异成绩没用使用RAC技术实现,具体可以参见http://www.tpc.org/

另一方面,多个服务器对共享磁盘的争用,也会消耗大量的系统资源。在用户配置了高性能的物理服务器,不能获得相应的性能增长。

此外,在主/主的群集配置中,群集中的一个服务器发生故障后,会导致性能下降。例如,在双节点群集中,如果一个节点发生故障,就只能使用 50% 的服务器处理能力支撑业务的运行。而采用主/从配置,根据设计,在发生节点故障后,它仍然可以提供 100% 的服务器处理能力来运行应用程序。当然,如果在发生故障后仍需获得 100% 的处理性能,必须在故障发生前具备额外的处理能力。使用 Oracle RAC ,必须至少使用 3个服务器(或 2 个超配置的服务器),以期容错并保持性能不受影响。 

六、多版本的读一致性:Oracle 支持读一致性并发模型;SQL Server用户的连续读会导致脏读,返回不正确结果

回应:

(Oracle这一点完全不是事实)
SQL Server 支持ANSI规定的四个隔离级别:

 请参看http://msdn2.microsoft.com/zh-CN/library/ms189122.aspx

Oracle仅实现了标准规定的两种 隔离级别 http://epub.itpub.net/3/4.htm

事实表明,在SQL中可以非常好地对数据的一致性进行控制,而Oracle,对数据一致性不可进行精细控制。 

七、数据库的并发性:Oracle采用读一致快照;SQL Server  读和写操作经常互相阻塞,大大增加了死锁的可能

回应:

SQL Server 2000中,的确不支持快照隔离级别。

SQL Server 2005中,除已有的四种隔离级别(Oracle仅有两种),又增加了快照隔离级别和已提交读快照隔离级别,SQL Server Database Engine 支持 SQL-92 中定义的事务隔离级别。设置事务隔离级别使程序员面临的风险因某些完整性问题而增加,但好处是可以支持更好的数据并发访问。现在SQL Server 2005可以支持完备的隔离级别,精细地对各种并发和性能进行调整。 

八、安全控制:Oracle 支持C2级安全认证; SQL Server空白

回应:

早在SQL Server 2000 SQL Server 就通过了C2级安全认证。

SQL Server 2005 RTM时通过了EAL4+级别认证

而且不论何种版本,都提供完整的安全性控制,而 Oracle不同,高级的安全功能仅仅只在企业版中提供。

来自http://www.secunia.com 对数据库产品安全公告的分析,可以清晰地看出,Oracle在历年对安全公告统计的结果中,Oracle的安全公告的数目要大大高于SQL Server 

九、硬件平台及操作系统的适用性:Oracle适用于几乎所有平台;SQL Server 只能在Windows上运行

回应:

SQL Server 基于从手持设备到高端大型服务器(包括64CPU的大型服务器),使用同一套Kernel的数据库产品,兼容性,扩展性以及一致性都非常好。

Oracle针对不同的平台使用不同的codebase

Oracle Kernal从六十年代开始使用,至今没有大的改变(有非常大的冗余)。而SQL Server 是九十年代的内核,具有更好的适应能力

只有专注于一个平台的产品才能做到最好的设计与调优

 

 

posted on 2008-08-15 17:00  Ken Lin  阅读(1256)  评论(0编辑  收藏  举报

导航