我正在学习SQL Server,但对Oracle知之甚少.谁能给我一个公平的比较呢?我已经阅读了有关SQL Server 2000与Oracle 9i的比较,但它有点过时了.SQL Server 2008是否赶上了Oracle 11g/i?
与SqlServer合作多年后,我只需0.02美元,而Oracle现在已经工作了4个月.
SqlServer更容易使用,这使您可以专注于您希望数据库执行的操作(解决一些业务问题),而不是一直摔跤服务器.
因为Oracle让您配置了这么多设置,所以有很多方法可以解决它们.这导致了关于分区,使用的索引类型等的无休止的讨论.在这些讨论中,没有人在考虑业务问题.
一个类比:我曾经有一个奥林巴斯相机,有一个很好的镜头和一些简单的设置.我用它做了很好的照片,所以我升级到了带有各种旋钮和表盘的数码单反相机.有了这个,我的照片不是一半好,因为我专注于相机而不是主题.
那对我来说是Sql和Oracle之间的区别.Sql更容易使用,因此可以完成更多工作.想法从白板到工作代码的速度要快得多.只有当您推动非常大的数据库时,Oracle可能会占据优势,但我甚至都不确定.不要知道Oracle可以处理SQL无法处理的事情.
编辑:此外,由于上下文切换到PL/SQL,Oracle在大数据量上的数据库内分析非常差.因此,如果您想要在数据上运行一些复杂的功能,请不要使用Oracle.另一方面,MS SQL在这个领域闪耀,因为它没有遇到这个问题,也有.Net集成.
我会说:
Oracle有一个更好的过程语言.与PL/SQL相比,T-SQL感觉只有一半.
SQL Server有一个更好的优化器.当我使用Oracle时,我必须提示每个查询以确保它不会永远完成,SQL Server才能正常工作.可能是服务器配置不当,这将我们带到下一个点
SQL服务器更容易使用.您需要专门的DBA来管理Oracle,但几乎任何bozo都可以使SQL服务器保持运行.
Oracle有一个更好,更可预测和更好记录的并发模型.
Oracle的文档在大多数方面都是优越的.
SQL服务器与.NET集成得更好(如恶魔Linq2SQL).
如果您使用Oracle,您还必须购买TOAD,但包含的Manegement Studio将用于SQL Server.
Oracle具有更酷的但几乎不需要的功能,如可扩展索引.
如果我选择我会去SQL服务器,因为更好的优化器.但是,当多个人在SQL Server中使用相同的行时,我真的不安全.
最终,现在并没有太大的不同.很少有人可以做到另一个不能,但开箱即用的配置往往有所不同.
最明显的区别是Oracle使用SEQUENCE,而SQL Server使用自动增量列.各有利弊.有些人比较喜欢一个.
根据我的经验,在SQL Server中进行前N个查询似乎比Oracle更容易.
开箱即用的Oracle使用MVCC(未提交的数据对其他事务的读取是非阻塞的 - 数据库维护一致的视图).我最近才发现的SQL Server也有这个,但它不是默认选项,而是被称为完全不同的东西.事务隔离级别等等.
PL/SQL和T-SQL在某些方面的语法上有相当的不同,但概念大致相同.
就个人而言,我发现SQL Server管理工作室在某些方面还不错,但是它的数据导入/导出只能用于自动增量主键.这是一个在SQL Server 2005上可以追溯到几年的已知错误.我不知道他们是否在2008年修复了它.使用PL/SQL Developer(不作为Oracle的一部分出货;它是一个单独的商业产品)进口和出口是轻而易举的.
Oracle对VARCHAR(2)columsn有一个恼人的限制:长度限制为4k.它们在SQL Server(64k?)中要长得多.
我发现SQL Server安全模型很奇怪.默认情况下禁用TCP(仅限Windows身份验证),然后您必须设置登录和用户?我从来没有那么做过.它似乎过于复杂,而在甲骨文中它只是:
CREATE USER blah IDENTIFIED BY password; GRANT CONNECT TO blah;
完成(虽然授予一些其他特权/角色,如RESOURCE是很常见的).
我从来没有想过管理员tstudio的备份/恢复.恢复将失败,说有人连接到数据库,但有人是我试图运行恢复.
在有人对我进行上述讨论之前,我完全清楚地知道其中许多源于我缺乏SQL Server经验,但老实说,这仍然是预期的概念的一致性(具有抽象)和可移植性.
我不知道这是否公平,但这是我与两者合作的经验:
Oracle似乎有点"强大",有一些SQL Server还没有完全赶上的漂亮功能.
SQL Server更易于使用,并且与Microsoft产品的集成更好(如果您正在进行.NET开发).
我是一名软件开发人员.我主要是在数据库之上编写软件(或至少帮助我的团队这样做).
这就是我对Oracle的看法:每次我想做某事时,我过去使用它的经验对理解如何完成当前任务没有帮助.我花了很多时间寻找一些有用的解释一个神秘的错误消息只是为了找到一些帖子暗示OP联系Oracle支持.我刚刚发现,如果您NOT NULL
对Oracle 10g中的空间列有约束,那么他们的数据泵导入工具会出错(这些内容相当神秘).即使在删除约束之后,我也遇到了导入挂起无效的问题.说到数据泵,它只能在本地运行.不推荐使用远程计算机上的导入/导出工具.当您的过程中出现错误时,它会告诉您编译失败但无论如何都会将过程对象创建为不可用状态.然后你必须运行一个命令来获取错误.用户和权限系统很差.用户是Oracle中的模式,但是对于所有大量权限,没有权限允许用户访问模式上的所有对象并允许用户终止会话需要授予ALTER DATABASE
权限(这可能会给用户提供权限)比你想要的更强大的力量).对于空间迷,它无法解析它为SRID 3857生成的WKT(当坐标变得足够大并且无法解析该数字语法时,它会吐出0.00000e6形式的数字).是的,其中很多都是具体的例子,但遇到这些我不能做我想做的事情的问题是我的日常体验,在一项任务中会出现多个问题.
我对SQL Server的经验有限,但我所做的并不是那么粗糙.我能够更轻松地弄清楚事情,我不记得看到的错误消息无法帮助我弄清楚我的问题是什么.我与SQL Server更广泛合作的同事报告了类似的经历.
也许这只是我,但与Oracle合作似乎总是一个痛苦,乏味的过程,寻找奇怪的错误,并试图解决我需要的功能缺失的事实,让我自己实现(如自动递增键) .我的底线意见是:也许Oracle可以表现得更好,但前提是你有时间和金钱让Oracle工作,然后弄清楚如何调整它以及让你的开发人员学习的钱.Oracle很难学习和使用.
我是SQLServer的人,对Oracle很了解,但在我看来,SQLServer与Oracle是一个宗教论点.不妨问哪个更好的Windows,Mac或Linux.
SQLServer和Oracle都是具有企业功能的数据库,具有壮观的开发人员,操作和IT支持故事.两者都能够在正确配置和调整大小时处理您需要注意的任何数据集,并且在配置不当和大小时都能够停止尖叫.
至于"易用性",正如我所说,我是一个SQLServer人,我发现SQLServer真的很容易使用(管理员).当然,我可能会发现Oracle很痛苦,因为我认为这是以SQLServer的方式.同样,我确信Oracle管理员/ dev发现Oracle易于使用,因为他们认为Oracle和SQLServer对他们来说很奇怪.
我认为当时的一个真正区别是Oracle是跨平台的,而SQLServer显然不是.但是,我不认为这是一个大问题,因为我不打算用Linux取代Windows.
我在各种项目中都使用过SQL Server和Oracle.我的想法:
SQL Server可以更好地与.NET配合使用
通常,SQL Server更易于安装和使用.作为开发人员,我很少需要SQLA的DBA,但似乎总是遇到Oracle需要DBA才能做的事情.
我非常喜欢PL/SQL(Oracle)而不是T-SQL(SQL Server)来编写存储过程
Oracle似乎有更重要的硬件要求
SQL Server的默认管理工具比Oracle附带的工具更易于使用
开发商很少混合两者
正如Cletus所提到的,Oracle与SQL Server的锁定结构根本不同:"作者不会阻止读者,读者也不会阻止作者",因为Tom Kyte(他的网站是一个非常棒的免费资源)喜欢说.SQL Server 2005中内置了类似的东西,但是这样做是为了在tempdb中实现行版本控制,这听起来不是特别可扩展.而且它默认关闭,因此微软的人们似乎并不特别相信它.
Oracle也有一个非常不同的查询缓存结构,因此使用绑定变量或占位符可以产生巨大的差异:"硬"解析(即数据库检查SQL语法,就好像它是第一次看到它一样)可以保持最小,这意味着只有"软"解析(填充变量)会占用开销.从10g开始,还提供绑定"偷看",以便您可以使用绑定变量而不受偏斜数据的影响.
此外,还有一些非常高效和简化的全文搜索功能以及行级版本控制.
SQL Server和Oracle的最新版本都是企业级的,并且在很大程度上类似于它们可以做的事情.
它们显然不会以相同的方式工作,但总的来说,两者在性能和功能上大致相同.
如果您想要对文章进行大量引用,请在google上搜索: SQL vrs Oracle
话虽如此,我确信许可和支持协议存在差异.
就我个人而言,我们有Oracle和SQL Server,我过去曾在那里工作过,比较这两个我在Oracle中看不到的任何我在SQL Server中无法做到的事情(我的一个角色是SQL Server) DBA).
我确信Oracle DBA也有同感.我们有10个SQL Server和数据库,数据库范围从微小到数百GB.Oracle有多个服务器和数据库,它们也很大.
在我看来,这已经归结为管理/成本问题,而不是过去的技术/功能问题,附录中的某些应用程序更适合于一个数据库而不是另一个数据库.
我对i和g的意义最好的猜测(没有查找它们).
将是,我是互联网准备好,g是网格enabed.
以下是有关SQL Server 2010的一些信息:Microsoft列出了SQL Server路线图
以下是微软与Oracle的比较:更多性能| 更具可扩展性 更有价值
以下是Oracle与微软的比较:Oracle(r)数据库10g第2版在头对头比较中优于Microsoft SQL Server 2005
我相信Oracle有一长串功能,SQL Server没有这些功能.这并不意味着你无法在MSSS中完成相同的任务,但是这些功能确实意味着Oracle可以更快地完成同样的事情
表集群.
我们可以在同一块/页面上存储来自多个表的数据.例如,包含表,列,索引和约束的系统表.如果您没有表簇,为了提取表,其所有列,索引和约束,您将查询父表的名称索引,然后转到父表,读取该行的页/块.然后获取PK,将该值放入列表上FK的索引中,获取rowid,转到包含这些行的块/页,重复其他两个表.哇......那是很多工作.
在Oracle中,您可以指定这四个表将基于Table_PK存在于同一个表集群中.所以阅读看起来像.检查集群索引中该表的位置,并使用一个或几个块获取所有4个表的数据.瞧.
在两个系统中,它是4个表,它看起来与应用程序完全相同,但如果最小化读取时间是至关重要的, Oracle可以更快地完成它.