微信号:imooc-com

介绍:慕课网是一个超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!

Percona向左,MariaDB向右,MySQL衍生版如何取舍?

2018-05-24 20:00 神思者l


对于MariaDB和Percona Server两个数据库,各大公司也存在分歧,淘宝使用的是Percona Server,而Google和Facebook则站在了MariaDB这边。





缘起

自从甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险。而且Oracle对培养MySQL这个免费的儿子并不太用心,漏洞修补和版本升级的速度一段时间非常缓慢,所以业界对MySQL的未来普遍不抱有乐观态度。因此社区采用分支的方式来避开这个风险,例如谷歌、Facebook、RedHat都将MySQL替换成了衍生版,国内也有企业纷纷放弃了MySQL官方版,像阿里和腾讯还做起了自己的MySQL衍生版。


目前MySQL领域存在着众多的衍生版数据库,主流的有官方MySQL、MariaDB以及Percona Server,小众一些的还有阿里的OceanBase和腾讯的CDB等等。那么Percona和MariaDB这两个主要的MySQL分支是怎么产生的呢?



MariaDB


起初MySQL之父Monty在1979年写下MySQL的第一行代码,后来逐渐创建起MySQL公司,后将其以10亿美金卖给Sun,结果Sun又把MySQL转手卖给Oracle,Monty愤而出走,以MySQL5.5为基础创造了MariaDB数据库,这样就诞生出了MySQL分支里知名度最高的一个衍生版。


Percona Server


Percona Server是MySQL咨询公司Percona发布的性能最接近MySQL企业版的MySQL产品。Percona公司在MySQL数据库优化方面做了非常多的工作,以至于Percona Server数据库是MySQL众多分支中,在高负载、高并发情况下表现非常突出,乃至阿里巴巴的OceanBase数据库都要借鉴Percona Server。



性能接近


其实在正常情况下,MariaDB和Percona Server的性能是差不多的,为什么是这样呢?


MySQL 4和5使用MyISAM作为默认存储引擎。从MySQL 5.5开始,就将默认存储引擎从MyISAM更改为InnoDB。这是因为长期以来MyISAM没有提供事务支持,使得MySQL游离在数据强一致性的门槛之外,正是InnoDB的加入,在使得MySQL从Oracle市场份额中分一杯羹。


我们先看看MariaDB使用的存储引擎。因为版权的原因,MariaDB一开始就放弃了InnoDB这个让MySQL大放异彩的存储引擎,最终选择了XtraDB引擎作为InnoDB的替代。


一方面,XtraDB引擎能做到的向下兼容,创建数据表的时候,InnoDB引擎会自动被替换成XtraDB引擎,用户和客户端根本感觉不到MariaDB和MySQL的区别。另外一方面,XtraDB的对事务的良好支持,让用户也感受不到XtraDB和InnoDB的区别。另外,在多核CPU和大内存上,XtraDB性能比InnoDB更好。


说到这里还要补充一句,XtraDB引擎是Percona公司开发设计的,与MySQL5.1内置的InnoDB相比,单位时间执行事务数量是后者的2.7倍。而且在Percona Server上面默认使用的也是XtraDB引擎。所以说MariaDB和Percona Server在正常情况下的性能基本持平。但是在高并发和高负载的条件下,Percona Server的表现更好一些。



部署平台


MariaDB的跨平台性更好一些,支持Windows平台和Linux平台,但是不支持MacOS平台。如果在MacOS平台上安装MacOS需要先安装Brew。


Percona Server不支持跨平台,只能在Linux平台安装



兼容性


MariaDB与Percona Server各自选择了对MySQL兼容的方式。MariaDB的起点是MySQL5.5,然后对MySQL改造,并且与MySQL5.6以上版本存在很大的差别。比如在单表保存一对多关系数据上面,MariaDB选择了DynamicColume(动态列)实现方式,而MySQL选择的是JSON方式。虽然都是一对多关系,但是MariaDB动态列的方式使用非常繁琐,也不支持数组格式,相反MySQL的实现就好很多。另外MariaDB的动态不支持索引,因此说按照动态列中的字段查找数据速度会很慢,而MySQL支持JSON索引,查询速度会快很多。


Percona Server与MariaDB不同,它是先兼容MySQL然后再进行优化,所以用户可以很容易的从MySQL迁移到Percona Server上面,而不用去考虑兼容性的问题。



选择


选择是痛苦的事情,对于MariaDB和Percona Server两个数据库,各大公司也存在分歧,淘宝使用的是Percona Server,而Google和Facebook则站在了MariaDB这边。从中我们可以看出,注重数据库稳定性和可靠性的企业都会选择Percona Server,包括利用Percona Server组建的Percona XtraDB Cluster集群,都体现的严格的数据读写一致性,这对于商业系统来说极为重要,读写速度来说仅仅是第二位的。那些数据价值低,注重数据读写速度的企业,更喜欢使用MariaDB,因为用MariaDB组建Replication集群,在保存SEO搜索、论坛帖子、新闻资讯、社交信息上速度更快。


说到这里,选择MariaDB还是Percona Server,唯一衡量的标志为是否存储商业数据。


这一次给大家带来一门《Docker环境下的前后端分离项目部署与运维》。


该课是把一个真实企业级前后端分离项目部署在Linux环境中,利用Docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能、高负载、高可用的部署方案。




教程学习地址

点击下方图片,即可查看





     

程序员的梦工厂


让更多热爱互联网的同学来慕课网学习

多年以后,圈子里一批技术牛说:

我在慕课网学习过,这就够了


慕课网

公众号ID:imooc-com

关注



 
慕课网 更多文章 【云栖专题——阿里百川技术分享】后APP时代的破局之路:阿里技术“三大容器五大方案”亮相,百川开放全面升级 做一次真实的开发,一次性拿下jQuery!转需~ 第一门Android实战课火爆上线!丨【新课速递】 学习之道 | 学习不是枯燥的劳作,是精彩的冒险(评论区留言送书啦!) 抽奖 | 双11实战大狂欢,“肾7”、iPad都给你准备好了!
猜您喜欢 数字证书及 CA 的扫盲介绍 iOS开发之动画中的时间 开源大数据实时分析系统LinkedIn Pinot初探 Java工程师如何在Docker上进行开发 支付宝红包的双11挑战