MySQL与其他数据库的缺点

Gor*_*son 28 mysql database oracle

每一本教授编程(或几乎其他任何东西)的书都是从一大堆关于它为什么(C++,MySQL,滑水,跳伞,牙科,无论如何)这些世界上最伟大的东西开始的.所以我打开MySQL O'Reilly的书,阅读介绍,并获得传统的布道.这本书提到的要点是:

  • 事实证明,MySQL已将Oracle捆绑为最快,最具扩展性的数据库软件.
  • 它是免费和开源的.

听起来很有说服力,但我知道每个故事至少有两个方面.当我看到有人建议有人使用Oracle而不是MySQL时,我知道我需要失望,并且想:"为什么在世界上你想要这样做?!",仅仅是因为我读过的几段,没有其他理由.所以让我们调查故事的另一面:

有什么理由不使用MySQL?

Eri*_*ric 28

这里只是一个突然出现在我脑海中的东西的随机列表.它是CW,所以请随时添加它.

  1. Oracle提供了基于其数据库的顶级ERP.如果您的公司受萨班斯 - 奥克斯利法案的约束,那么这一点就要高于"至关重要".
  2. SQL Server许可证随Analysis Services,Integration Services和Reporting Services一起提供.如果您想对OLAP,ETL或报告执行任何操作,这三个是构建在SQL Server堆栈上的出色应用程序.
  3. SQL Server具有本机.NET数据类型(2008年).对于处理地理空间数据集的.NET商店来说绝对是出色的.
  4. MySQL不支持检查约束.
  5. SQL Server包含该over子句,它有助于处理"每组中的前n行"问题.从本质上讲,您可以按照自己喜欢的方式对数据集进行分区.
  6. SQL Server本身使用Kerberos和Windows身份验证.MySQL不与Active Directory绑定.
  7. 子查询的卓越性能(几乎所有数据库都具有优于MySQL的子查询性能)
  8. Oracle,SQL Server,PostgreSQL和其他人可以使用更丰富的连接算法; 这意味着连接通常可以更快地执行,尤其是涉及大型表时.

  • 非常好的清单,但有一些明显的不准确.其中一些假设使用MyISAM,其他InnoDB并没有一个似乎充分考虑其他数据库格式. (3认同)
  • @epalla:你需要在OVER上阅读.LIMIT确实可以更容易地选择一系列行,但它没有聚合,分组或排序容量,这使得它远低于它.它也不能将值注入记录集.OVER可以与Row_Number,Rank,Dense_Rank,NTile,Sum,Max,Min和Avg一起使用...抱歉,LIMIT甚至与OVER不在同一个Universe中. (3认同)

Jef*_*vis 24

事实证明,MySQL已将oracle与最快,最具扩展性的数据库软件联系起来.

对任何两个数据库系统做出这样的陈述可能足以让你把这本书扔掉,而不会阅读其余部分.数据库系统不是可与几行信息进行比较的商品,在可预见的未来也不会.

声明显然是错误的一个原因是MySQL的计划选择非常有限.例如,MySQL不能使用合并连接或散列连接 - 两种具有有用性能特征的基本算法.对于许多查询工作负载而言,这几乎就是故事的结尾.通过合并连接显示一个数量级更快的合理查询是微不足道的.

对MySQL和XYZ有很多其他批评,反之亦然.我的观点是,这是一个复杂的问题,而且这本书大大过于简单化了.如果您正在参与数据库,则需要花时间分散您的知识并理解基础知识.

我个人认为MySQL和SQLite是最糟糕的起点.选择像Oracle这样的东西(可以免费下载用于学习/评估,许多人没有意识到),PostgreSQL(BSD许可证)或MS SQL.FirebirdSQL也可能不错.一旦熟悉了一些系统,您就能够明智地选择MySQL所做的权衡是否适合您.


EBG*_*een 5

每个人似乎都缺少坚持使用Oracle/MS的主要原因之一.您已经拥有了一整套了解内部和外部产品的DBA.