缘起

自从甲骨文公司收购了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,唯一衡量的标志为是否存储商业数据。

链接:http://www.imooc.com/article/30432

Percona,MariaDB,MySQL衍生版如何取舍的更多相关文章

  1. MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述

    本文目录: 1.安装xtrabackup 2.备份锁 3.xtrabackup备份原理说明 3.1 备份过程(backup阶段) 3.2 准备过程(preparing阶段) 3.3 恢复过程(copy ...

  2. MariaDB mysql 比较区别 选择

    MariaDB数据库管理系统是MySQL的一个分支 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是 ...

  3. CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

    原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...

  4. (MariaDB/MySQL)之DML(1):数据插入

    本文目录: 1.insert和replace插入数据 1.1 insert into values() 1.2 insert into set 1.3 insert into select_state ...

  5. [daily][mariadb][mysql] mariadb快速设置

    参考: https://wiki.archlinux.org/index.php/MySQL 1. 安装 使用pacman常规安装 2. btrfs 禁用CoW mariadb的数据文件如果存储在bt ...

  6. CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

    转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...

  7. CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock

    转载自:http://www.linuxidc.com/Linux/2016-03/129396.htm 今天在Linux主机(CentOS 7)安装(yum install方式)Mariadb(即开 ...

  8. 安装mariadb/mysql 连接失败问题

    在linux下安装mariadb会出现一系列问题 问题1->服务器端不需要用户名密码就可登陆数据库 问题2->php使用mysql不能连接数据库 访问受限 问题3->navicate ...

  9. [转载]CentOS 下安装LEMP服务(Nginx、MariaDB/MySQL和PHP)

    LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 P ...

随机推荐

  1. python 数据类型 常用法方

    python 数据类型 常用法方 upper() 大写 str lower() 小写 str strip() rstrip() lstrip() 去除字符两边的空格 去右边 左边空白 str repl ...

  2. 使用layui框架根据字段来设置tr行的背景色

    问题来源:最近在写公司项目时使用layui遇见的问题,老板要求根据td字段来设置整行tr的背景色. 解决:一开始数据比较少的时候只是直接在页面根据js动态判断字段然后来更改背景色,结果能够成功,但是后 ...

  3. 使用ngspice进行电路仿真

    电路spice仿真工具已经比较成熟,开源的免费工具也有不错的性能.使用ngspice可以得到不错的仿真结果. 在Linux系统上,例如写一个RLC谐振的电路: RLCV1 1 0 AC 1V L 1 ...

  4. VMware下载及安装(含破解码)永久使用

    VMware(纽约证交所代码:VMW)在虚拟化和云计算基础架构领域处于全球领先地位,所提供的经客户验证的解决方案可通过降低复杂性以及更灵活.敏捷地交付服务来提高IT效率.VMware使企业可以采用能够 ...

  5. SpringBoot中LocalDatetime作为参数和返回值的序列化问题

    欢迎访问我的个人网站 https://www.zhoutao123.com 本文原文地址 https://www.zhoutao123.com/#/blog/article/59 LocalDatet ...

  6. Centos7启动流程及systemd中Nginx启动配置

    Centos7启动流程: 1.post(Power-On-Self-Test) 加电自检 主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主 ...

  7. react navtagion 头部有返回按钮 标题不居中解决方法

    头部右边写一个隐藏的组件 hederRight:( <View><View> )

  8. redis 设置密码并运行外部连接

    redis默认是不能远程访问的,如果希望多台机子共用redis数据库,那就需要开启redis远程连接访问.既然可以远程连接了,那就需要密码登陆,否则不安全.下面是具体的方法,按照步骤一步一步来就OK了 ...

  9. LeetCode - 206、反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL /** * 列表定 ...

  10. IDEA实用教程(十一)—— 使用Maven创建JavaSE项目

    第一步 第二步 在IDEA中,我们常用三种骨架 org.apache.maven.archetypes:maven-archetype-quickstart : 打包方式为jar org.apache ...