ORACLE对比MYSQL

ORACLE 对比 MYSQL

行业比对

  1. Oracle 能背锅,MySQL 不能背锅。
  2. Oracle 发展于传统行业,行业特点是数据量少,但是每条数据价值很高(银行账户的一笔交易记录)。Mysql 发展于互联网行业,业务特点是数量巨大,但是数据价值小(一次点击操作)。因为单条价值高,随意使用付费 ORACLE 软件也合理。
  3. 企业应用中使用 Oracle 时大多数业务都在数据库的存储过程中实现,而 Web 应用使用 Mysql 时很多业务逻辑是在 web 服务端上实现。
  4. oracle 目前来说还是占据着主流。除了互联网之外的传统行业基本上还是用的 oracle,无论从规模还是数量上,比 sql 有着大不知道多少倍的基数,想要改弦易辙,何其难也?
  5. 传统行业讲究“稳”字。传统行业的数据生态是基于数据库架构搭建起来的,很多核心业务都已经牢牢绑定了 oracle 这样的重型系统,一旦改用 sql 触动了核心业务,就势必会带来安全问题,传统行业没有必要冒这个风险。(另外,这么牛叉的开源技术也不是几句话就能有的)
  6. 互联网行业讲究“快”字。互联网就是一场赛跑游戏,谁跑的慢谁就要挨打,所以互联网企业可以在更加纯粹的开源环境里不断试错,sql 明显更适合互联网企业的开发和创新。
  7. 数据完整性要求不一致。传统行业不会允许数据出现完整性、一致性的错误,比如对于互联网企业来说,微博上的评论丢了几条没有关系,但是对于传统行业来说哪怕账户上少了一分钱,就足以引起传统行业的重视。
  8. 数据重心不一样。Oracle 的业务数据库规模都不是很大,如果有上百台就是很大的规模了,而互联网行业里面的 MySQL 使用广泛,几百台都是很平常的事情。
  9. Oracle 的产品已经做得足够好了,满足了传统行业的要求。Oracle DBA 的管理模式主要是集中式,因为业务面大,出问题的概率会更高,高级人才在性能优化这方面投入的精力更多,但对于传统行业来说并不是什么问题。
  10. 国内对于 MySQL 和 Oracle 使用的一个误区就是把 MySQL 当 Oracle 用,把 Oracle 当 MySQL 用。单纯比性能其实意义不大,Oracle 肯定完胜 MySQL,要比较水平扩展能力,那还是 MySQL 更加轻量。当然啦。

技术比对

  1. hash join 。Oracle 引进这的时候应该是 90 年代,而今天,Mysql 还没有。这样连接性能肯定不行。当然,这个用变通解决可以绕过去。

  2. with as 。Oracle 中可以 select 查询作为一个中间结果,然后多处引用。这个 mysql 好像最近的 8.X 才有。多土啊,这可是最有用的功能之一。

  3. rownumber。到目前为止,mysql 还没有 row_number。这可是程序员最常用到的功能之一。当然,可以变通解决。

  4. Ananlytic function 和 window function。 这个 Oracle 很强大(比如当前行引用前一行的值)。Mysql 基本可以说是没有(当然也可以变通解决)

  5. Stored procedure 这个 mysql 差太远太远,基本上是步枪对机枪。Mysql 没有 role 吧?程序员得造轮子。(查了下,8.0 有了。)

  6. ORACLE 数据库自带 oracle apex 开发。好像数据库里只有 oracle 愿意投钱搞这个。

  7. vpd,materialized view ,workflow,geological…… 这些 mysql 或者没有或者菜,当然 oracle 也不是每个版本都有。不过这些功能并不是日常必然用到的,所以还好啦。

总之,mysql 短处不少,不过,用熟了之后,大多数是可以找到变通解决方法的。比如大家诟病很多的 Hashjoin 连接,用冗余字段解决,效果肯定比 hashjoin 好。

总结

两种数据库出生在不同时代,ORACLE 作为商用产品是面向企业用户的,mysql 作为免费开源产品是保证一定程度上满足应用对数据库的需要,在 mysql 被 ORACLE 收购之前,功能比较简单,性能也比较一般。但在收购之后,mysql 从功能和性能上都获得了很大的提升,很多方面也在想 ORACLE 数据库看齐。