当前位置:文档之家› Oracle与SQL Server比较

Oracle与SQL Server比较

Oracle与SQL Server比较

一、 操作平台

操作系统的稳定对数据库来说是十分重要的,由于SQL Server与Windows操作系统同属Microsoft公司的产品,所以在和Windows操作系统的整体结合程度、使用方便性、和Microsoft开发平台的整合性都比Oracle强的很多;但是Windows操作系统的稳定性及可靠性大家是有目共睹的,并且 Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中,只有随着Windows性能的改善,SQL Server才能进一步提高。

Oracle可在所有主流平台上运行,包括Windows、Unix、Linux等等。同时Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。而SQL Server却只能在Windows上运行了,显得比较单调。从操作平台这点上Oracle是完全优胜于SQL Server的了。

二、 可操作性、易用性

二者的可操作性方面,SQL Server明显略胜一筹,这也主要得益于它与Windows的紧密结合。SQL Server使用全图形界面,很少见到DOS窗口。SQL Server中的企业管理器给用户提供一个全图形界面的集成管理控制台来集中管理多个服务器。上手迅速,可用性相当好。而Oracle在8i版本之前都没有图形界面,完全是DOS界面,可操作性与易用性大打折扣,现在Oracle也有自己的基于Java开发的企业管理器,图形化界面,但是第一它安装较为复杂,第二它的显示效率不如SQL Server,占用内存也远远大于SQL Server,可用性较差。不过现在还有很多第三方的厂商开发了基于Oracle的开发工具,比如PLSQL Developer,使用简单、方便、占用资源较小,可以较好的弥补这一点。

三、 数据库管理

1. Oracle是针对表空间和用户来进行管理,而SQL Server是以针对单独的数据库进行管理。换另一种说法也就是,Oracle的数据权限分配是以用户可以访问哪些表作为依据。而SQL Server是以特定数据库中哪些用户可以访问作为依据。

2. 数据类型比较(只摘录较为常用的):

⑴Oracle的varchar2与SQL Server的varchar

varchar2允许存储从计算机上输入的任何字符,是一种变长度的数据类型,最大为4000个字节,如果存储数据小于或等于定义的长度,按实际长度存储。但是如果数据以空格结束,varchar2类型保存,并且在查询时作为检索条件,而varchar类型忽略数据最后的空格,并且不作为检索条件。

⑵Oracle的number与SQL Server的int、double、decimal、money、float等数字类型

bigint表示从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字);int适用于从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数

据(所有数字);smallint适用于从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据;tinyint适用于从 0 到 255 的整数数据;bit适用于1 或 0 的整数数据;decimal适用于从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据;numeric功能上等同于 decimal;money表示货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十;smallmoney货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十;float表示从 -1.79E + 308 到 1.79E + 308 的浮点精度数字;real表示从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。

而对于Oracle而言,只需要使用number类型,定义小数点前的位数与小数点后的位数即可。

⑶大数据量存储:SQL Server使用text、ntext存储大数据量的文本文件、image存储大二进制文件,Oracle使用long类型可以存储,但是一个表只能有一列使用该类型。同时Oracle还可以使用BLOB存储大二进制文件,CLOB存储文本文件。

SQL 语法,二者都支持标准SQL语法,也都做了拓展,SQL Server使用T-SQL语法,而Oracle使用PL-SQL语法。

3. 并行访问机制

并行访问出现问题存在若干种情况。

⑴在最简单的情形下,数量超过一个的用户可能同时查询同一数据。就这种情况而言数据库的操作目标很简单:尽可能地为用户们提供快速的数据访问。这对数据库来说不成问题:SQL Server和Oracle都采用了多线程机制,它们当然能够一次处理多个请求。

⑵不过,在用户修改数据的情况下并行访问问题就变得复杂起来了。显然,数据库通常只允许唯一用户一次修改特定的数据。当某一用户开始修改某块数据时, SQL Server和Oracle都能很快地锁定数据,阻止其他用户对这块数据进行更新,直到修改该数据的第1位用户完成其操作并提交交易(commit transaction)。但是,当某一位用户正在修改某块数据时假设另一位用户又正想查询该数据的信息时,SQL Server数据锁定操作阻塞其他任何访问该数据的连接——连查询操作都不会放过。于是,这块被锁定的数据只有在交易被提交或者回滚之后才能接受其他访问操作,如果一直不提交或者回滚,查询会一直等待,而结果会一直无法显示,SQL Server的数据锁定方案可能会降低系统的性能和效率。数据被锁定的时间越长,或者锁定的数据量越大,其他数据访问用户就越可能不得不等待其查询语句的执行。而Oracle中只要某一用户启动了一宗修改数据操作,之前的数据映像就会被写到一个特殊的存储区域。这种“前映像”用来向任何查询数据的用户提供一致的数据库视图。这样,当其他用户在修改数据的时候,其他用户仍

然能查询到未被修改的数据,Oracle的解决方案相比更为合理,在抽象意义上提供了相比SQL Server更佳的数据一致性。在执行Oracle查询的时候无须担心较长的查询操作会锁定重要的操作。

4. 临时表

SQL Server创建的临时表在创建后会由数据库自动回收。而Oracle的全局临时表会一直存在,但是其中数据在提交后会全部清除。

5. 帮助文档

SQL Server提供详细的中文说明文档,但是Oracle本身并不提供中文说明文档。最起码说明在针对中国市场上,Oracle并不如SQL Server态度积极。

四、 价格

二者不是同一个数量级,SQL Server的价格仅相当于Oracle的十分之一。加上培训、其他组件购买,Oracle的花费将远远超过SQL Server。

五、 性能

那种数据库更快?这其实是一个很难回答的问题,因为存在许多不定因素,包括处理类型、数据分布以及硬件基础设施等。

比如Oracle数据库在windows 32位操作系统下只能使用2G的内存,而SQL Server则不存在这方面的问题,这肯定会制约Oracle数据库的性能。Oracle可以运行在其他的操作系统平台上,而SQL Server却不能运行在其他操作系统上,二者在这方面的比较也无从谈起。

一些经验表明在长时间运行大量事务方面Oracle数据库要优于SQL Server,但在集群技术等方面,SQL Server比Oracle数据库要好一些。

相关主题
文本预览
相关文档 最新文档