//
MySQL的两个主要分支
//
开始之前,我们首先截取一个当前数据库使用流行度的一个图,来简单分析下这两个分支现在的使用情况,图截取自DB-Engine网站:
这里友好的贴出连接:
https://db-engines.com/en/ranking
从图中可以看到,官方的MySQL的用户量最多,接下来是MariaDB,他排在第13位,那么percona server呢,看看排名:
它的排名在96位,这可以大概看出来当前这几种数据库的流行程度。
01
MariaDB简介
首先我们简单介绍一下MariaDB和Percona Server,先从MariaDb开始,MariaDB数据库是MySQL的一个分支,它由MySQL的创始人Monty Widenius(以下简称MW)主导开发,MariaDB选自她女儿的名字,2008年Sun公司用10亿美金收购了MySQL,但是由于各种原因,Sun公司又将MySQL转手卖给了Oracle,MW感到失去了对MySQL的控制权,又或者是害怕Oracle不会投入足够的精力来保证MySQL在数据库领域的领先地位,遂创建了MariaDB,从某种程度上来讲,MariaDB才是MySQL一脉相承过来的继承者。Monty为了避免它闭源而特别成立了一个基金会,将MariaDB交由基金会管理,这个基金会无法参与商业活动,就避免了MariaDB不如MySQL的后尘,也就是被卖掉,这可能是MW的初衷,当然MariaDB也是一个公司,它提供一套完成的服务来支撑MariaDB产品,官网是https://mariadb.com/。
MariaDB基金会还成立了赞助会员制度,值得庆幸的是,有一些国内的公司也是他的会员,包括腾讯和阿里:
在早期,MariaDB还可以作为MySQL的替代品,从MySQL到MariaDB切换应用程序的时候,不需要做任何改动,然后众多原因导致MariaDB这个分支比MySQL官网更新的更快一点,对内核的修改逐渐增多,意味着MariaDB的高版本数据库已经不能完全兼容MySQL的官方版本了,使用者不得不做出调整,从而适应高版本的MySQL。
02
Persona Server简介
再来说说Percona Server数据库,Percona是MySQL的运维人员创建的,这个分支更多的是从运维人员的角度去设计的,所有有很多常用的DB处理工具,例如Xtrabackup和Percona Toolkit,也就是常说的pt工具,Percona的理念是完全兼容MySQL,这是与其他分支的最大区别,因此从MySQL将程序迁移到Percona Server上,理论上是不需要任何的代码改动的。
Percona公司为了提升MySQL的性能,在优化方面做了很多工作,例如新开发的存储引擎XtraDB,可以认为是innodb存储引擎的升级版,它的执行事务的效率更高,当你使用Percona Server工具来创建Innodb类型的表的时候,存储引擎将会被自动转化为XtraDB,而用户根本感知不到区别。Percona Server虽然是开源的,但是他们对于自己的代码管理相当严格,一般情况下不接受其他开发人员的贡献,这种方法也是为了保证这个服务可控。
除此之外,Percona的设计理念是先拿到最新版本的MySQL在完全兼容它的情况下去开发一些新的功能模块,这样能保证用户在使用过程中可以平滑的进行业务迁移。关于Percona Server和MySQL官方版本之间的对比,在网站:https://www.percona.com/software/mysql-database/percona-server/feature-comparison上面可以看到。
03
怎么选择?
1、其实官方的MySQL能够满足绝大多数情况下的需求。官方的MySQL流行度排名也在第二位,这表明大部分公司或者研究机构对于官方的MySQL性能是很自信的,群众的眼睛是雪亮的,选择官方版本,肯定不会错。
2、MariaDB的排名之所以比较靠前,可能还是跟一些公有云的厂商有关吧,于此同时它是红帽、SUSE等公司提供的一些LAMP架构的安装包的默认数据库。啥是个LAMP呢?由Linux、Apache、MySQL 和 PHP(或 Perl)是许多 Web 应用程序的基础,我们把这种架构称之为LAMP架构。
需要注意的是,高版本的MariaDB已经不能完全兼容MySQL了,所以当你有迁移需求的时候,需要慎重考虑MariaDB,但是它的性能还是很不错的。
3、Percona Server,这种数据库不支持跨平台,只支持Linux系统,而前两者都支持windows、OS X、Solaris等,这可能也是Percona Server数据库排名靠后的原因吧,但是Percona Server提供了一些实用的运维工具,例如PT,其实对运维人员是非常友好的,而且其新增XtraDB的存储引擎性能相当不错,因此当你使用Linux操作系统的服务器的时候,不防采用Percona Server来做一些尝试。最最关键的是,它完全支持官方的MySQL版本。
数据库的选择从来不是从一而终的,你完全可以根据自己的业务状况,分析最适合的MySQL分支,也可以将官方MySQL和Percona Server进行混用,或者Percona Server和MariaDB混用,总之,只要能够解决问题,怎么选择都是正确的。