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 部分可以并行执行。之后,实际的数据更改将串行应用到数据库。也就是说对于DML,SQL 可以部分并行。
五、并行处理技术: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 2005:4.82美元
– Oracle 10g:8.33美元
– 微软SQL Server 2005价性比最低,比Oracle低:3.51美元
高可用性比较
SQL Server 2005多数据主流数据库产品,如IBM的DB2相同,采用share-nothing技术实现故障转移集群,在这种模式下,如果只采用active/standby模式,不能够实现两台物理服务器同时写共享磁盘阵列,但是硬件配置适宜的条件下,SQL Server 2005 支持share-nothing技术下的active-active实现。
对于Oracle 采用share-data模式,随着节点的增加,其内部通讯带来的系统开销(即cache同步等),是在OLTP系统上是一个非常令人担心的问题,对于Oracle的RAC对于大型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 是九十年代的内核,具有更好的适应能力
只有专注于一个平台的产品才能做到最好的设计与调优
IW.Smart Work