mariaDB vs mysql

今天遇到一个库使用的是mariaDB的数据库版本

Server version: 10.1.20-MariaDB MariaDB Server

理了一下mariaDB和mysql的关系。

分支

简要来说,mariaDB是mysql上的分支。首先为什么要有这个分支呢?mysql被oracle收购之后,原本的那些mysql的开发者(MySQL 的联合创始人兼CEO Michael Widenius)觉得mysql后续的发展之路会受到oracle公司的影响。所以单独出来,创建了一家公司Monty Program Ab。这个公司从mysql上拉一个分支出来进行开发和维护,命名为mariaDB。

mariaDB的github上的项目地址为:https://github.com/MariaDB

mariaDB的主页为:https://mariadb.org/

mysql现在最新版本是5.7。mariaDB在5.5之前都兼容了mysql所有的新特性。也就是说,mariaDB是mysql的超集。但是当然mariaDB每次需要同步mysql的新的特性到自己的分支,这个是非常痛苦的事情。但是mariaDB的目标是另外创建一个独立产品和社区。所以mariaDB创建了10的版本号。从这个版本号开始,mariaDB的特性和功能就越来越走向独立了。

功能

mariaDB的可以看作是mysql的超集。mysql有的特性mariaDB都有,但是mariaDB有的功能不一定mysql有。比如Dynamic columns。

Dynamic columns

这个功能有点像json,表中有一个字段,可以存储key,value格式的数据,并且这个value的数据类型可以动态定义。这样,就好像mysql的表扩展了多个动态列。

比如:

CREATE TABLE bird_sightings
(
sighting_id INT AUTO_INCREMENT KEY,
human_id INT,
time_seen DATETIME,
observations BLOB
);

这里的observations是BLOB类型,可以存储key-value的格式。

INSERT INTO bird_sightings
(human_id, time_seen, observations)
VALUES
(36, NOW(),
COLUMN_CREATE(
'wing-shape','rounded',
'wingspan','60',
'bill-shape','all-purpose',
'main-color','orange'
));

看这里的observations就存储了四个key-value。

当select的时候

ECT name_first AS 'Birder',
DATE_FORMAT(time_seen, '%b %d') AS 'Date',
COLUMN_GET(observations, 'wing-shape' AS CHAR) AS 'Wings',
COLUMN_GET(observations, 'wingspan' AS INT) AS 'Span (cm)',
COLUMN_GET(observations, 'bill-shape' AS CHAR) AS 'Beak'
FROM bird_sightings
JOIN humans USING(human_id); +---------+--------+---------+-----------+-------------+
| Birder | Date | Wings | Span (cm) | Beak |
+---------+--------+---------+-----------+-------------+
| Anahit | Apr 14 | pointed | NULL | all-purpose |
| Michael | Apr 14 | rounded | 60 | all-purpose |
+---------+--------+---------+-----------+-------------+

这里的COLUMN_GET有个输出类型的设置。这一个功能就是mariaDB特有的。感觉和postgres里面的jsonb结构很相似。

存储引擎

mariaDB提供的XtraDB存储引擎替换InnoDB。XtraDB 是 Percona 开发维护的 InnoDB 威力加强版,整合 Google、Facebook 等公司和 MySQL 社区的补丁。

性能

在性能上,mariaDB的性能有一定程度优于mysql是不争的事实。比如维基百科就从mysql迁移到mariaDB了。反馈,总的来说,mariaDB会比mysql在qps上有2-10%的提升。当然我相信不同的场景,不同的语言可能会有不同的性能提升程度。

参考

http://radar.oreilly.com/2015/04/dynamic-columns-in-mariadb.html

https://seravo.fi/2015/10-reasons-to-migrate-to-mariadb-if-still-using-mysql

https://softwareengineering.stackexchange.com/questions/120178/whats-the-difference-between-mariadb-and-mysql

mariaDB vs mysql的更多相关文章

  1. centos7 高速安装 mariadb(mysql)

    从最新版本的linux该系统启动,缺省值是 Mariadb代替mysql! 使用系统自带repos安装非常easy: yum install mariadb mariadb-server system ...

  2. MariaDB与MySQL在一台服务器同时运行

    [root@HE3 ~]#groupadd mariadb -g 513 [root@HE3 ~]#useradd-u 513 -gmariadb -s /sbin/nologin -d /home/ ...

  3. MariaDB与MySQL

    一.MariaDB安装部署 tar zxvf mariadb-5.5.31-linux-x86_64.tar.gz mv mariadb-5.5.31-linux-x86_64 /usr/local/ ...

  4. MariaDB 和 MySQL 比较

    MariaDB.org - Supporting continuity and open collaborationhttps://mariadb.org/ MariaDB 和 MySQL 比较 - ...

  5. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  6. 数据库对比:选择MariaDB还是MySQL?

    作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...

  7. MariaDB与MySQL并存

    以下是MariaDB官方文档说明,MariaDB如何安装在已经存在MySQL实例的主机上: https://mariadb.com/kb/en/library/installing-mariadb-a ...

  8. Buildroot MariaDB替代MySQL

    /********************************************************************************* * Buildroot Maria ...

  9. mariadb或者mysql查看某个库相关的用户授权信息

    mariadb或者mysql查看某个库相关的授权信息 SELECT * FROM mysql.Db WHERE Db='DB_NAME';

随机推荐

  1. centos/linux 禁止root用户远程登录

    注意:在禁止root等前要建立一个用户用来远程登录,否则退出后无法通过远程登录服务器. 编辑 /etc/ssh/sshd_config 文件 更改参数 PermitRootLogin yes 为 Pe ...

  2. 搭建centos7的开发环境1-系统安装及Python配置

    在公司开发部干活的好处是可以再分配一台高性能的PC,有了新的工作电脑,原来分配的笔记本电脑就可以安装linux系统做开发了,主要有两方面的开发计划,一个是计划中要参与爬虫系统的开发,第二个是大数据环境 ...

  3. 开源纯C#工控网关+组态软件(十)移植到.NET Core

    一.   引子 写这个开源系列已经十来篇了.自从十年前注册博客园以来,关注了张善友.老赵.xiaotie.深蓝色右手等一众大牛,也围观了逗比的吉日嘎啦.精密顽石等形形色色的园友.然而整整十年一篇文章都 ...

  4. prometheus alert rules文件格式化

    1.下载go(version>1.9,否则promtool工具不好使) https://golang.org/doc/install?download=go1.10.2.linux-amd64. ...

  5. vue项目 构建 打包 发布 三部曲

    一.vue项目的创建 1.首先第一肯定是要有Node.js及npm这个不多说了2.安装脚手架 此时可以直接浏览-但是现在肯定有很多小白想将他发布到gitHub上并可以浏览,使用vue全家桶制作自己的博 ...

  6. spring+springmvc+mybatis构建系统

    今天和大家分享的是spring+springmvc+mybatis搭建框架的例子,说到这里不得不说现在市面上一流大公司还有很多用这种架子,创业型公司大部分都用springboot集成的mvc+myba ...

  7. IM进化论:腾讯也难逃被颠覆掉的命运

    在一定程度上,腾讯代表了中国IM领域的过去和未来.但有句俗话,后来推前浪,前浪被拍死在沙滩上,"生死腾讯"也总会变为生和死,因为腾讯很可能会有被颠覆掉的一天.腾讯的IM接口是个庞然 ...

  8. SpringMVC, Spring和Mybatis整合案例一

    一  准备工作 包括:spring(包括springmvc).mybatis.mybatis-spring整合包.数据库驱动.第三方连接池. 二  整合思路 Dao层: 1.SqlMapConfig. ...

  9. Spring中的Lookup(方法注入)

    在使用Spring时,可能会遇到这种情况:一个单例的Bean依赖另一个非单例的Bean.如果简单的使用自动装配来注入依赖,就可能会出现一些问题,如下所示: 单例的Class A @Component ...

  10. 《Redis入门指南》第2版 读书笔记

    读第二遍了,感觉和几年前读时的收获不一样了.送上门来当树洞的独自承担一切 Redis以简洁为美Redis通信协议是Redis客户端与Redis之间交流的语言,通信协议规定了命令和返回值的格式.Redi ...