爸,我把对象带回来了,他是搞MySQL的

快要过年了,李梅今年满怀期待的把对象小吴带回了家,希望能通过父母的“面试”~

爸,我把对象带回来了,他是搞MySQL的

回了家,李梅妈妈热情地款待了小吴,李梅爸爸却坐在沙发上纹丝不动,看都不看小吴一眼。母女俩去了厨房忙活晚饭,小吴尴尬地坐在未来丈人对面,等了一会儿,老丈人开始发问了。

爸,我把对象带回来了,他是搞MySQL的

Oracle 诞生时间是1977年。

MySQL 诞生时间是1995年。

爸,我把对象带回来了,他是搞MySQL的

MySQL 前身为MySQL AB,2008年被SUN收购,转年被Oracle收购。当年MySQL社区发起了声势浩大的抵制运动,Oracle迫于公众压力,作出了会一直保证MySQL开源免费的承诺。

爸,我把对象带回来了,他是搞MySQL的

  1. 首先,服务端操作系统不同,Oracle是 AIX、HP-UX、Linux、OS X、Solaris、Windows、z/OS;MySQL是FreeBSD、Linux、OS X、Solaris、Windows。
  2. 其次,在服务端SQL脚本语言也有所不同,Oracle使用的是PL/SQL,是一种过程化语言,可以实现比较复杂的业务逻辑;MySQL与标准SQL兼容度较好,且有一定的扩展。
  3. 分区方法上,Oracle是通过可选的Oracle分区进行水平分区;MySQL也是水平分区,但它是通过MySQL Cluster或MySQL Fabic分片来分区的。(分区方法,通俗的说,就是在不同节点上存储不同数据的方法。)
  4. 在对MapReduce的支持上,Oracle略胜一筹,但是Oracle可以通过PL/SQL变通实现,而MySQL无法支持。
  5. 并发性方面: Oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖于索引。所以oracle对并发性的支持要好很多;MySQL以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
  6. 性能诊断这块,Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等;MySQL的诊断调优方法较少,主要有慢查询日志。

爸,我把对象带回来了,他是搞MySQL的

首先可以肯定的是,完全被取代是不可能的。

传统行业稳定为先,早期的业务都是基于商业数据库架构来构建的上下游生态,要去替换核心业务一来需要足够的时间和风险,二来需要开源技术足够厉害,这是一个互补的过程,从行业的真实情况而言,传统行业里面的Oracle占有率还是很高的,从数量和规模上都占有绝对的优势。

但是不可否认,后续新增业务会逐步向开源方向延伸,对企业来说这是件好事,为什么不呢?

爸,我把对象带回来了,他是搞MySQL的

今年过年,你把对象带回家了吗?

献给准备跟着女友见老丈人的技术男们,好好表现,争取直接娶了!

老王还将分享数据库运维的系列文章,欢迎关注本号、收藏、学习、实践,在老丈人和真正的面试官面前都可以好好表现!

爸,我把对象带回来了,他是搞MySQL的

相关推荐