浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)
mariadb数据库管理系统是mysql的一个分支,主要由开源社区在维护,采用gpl授权许可。开发这个分支的原因之一是:甲骨文公司收购了mysql后,有将mysql闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
mariadb的目的是完全兼容mysql,包括api和命令行,使之能轻松成为mysql的代替品。
mariadb由mysql的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司mysql卖给了sun,此后,随着sun被甲骨文收购,mysql的所有权也落入oracle的手中。
mariadb名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:maria)的名字。
mariadb直到5.5版本,均依照mysql的版本。因此,使用mariadb5.5的人会从mysql5.5中了解到mariadb的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照mysql的版号。10.0.x版以5.5版为基础,加上移植自mysql 5.6版的功能和自行开发的新功能。
在存储引擎方面,10.0.9版起使用xtradb(名称代号为aria)来代替mysql的innodb。
mariadb的api和协议兼容mysql,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。
这意味着,所有使用mysql的连接器、程序库和应用程序也将可以在mariadb下工作。
在此基础上,由于担心甲骨文mysql的一个更加封闭的软件项目,fedora的计划在fedora 19中的以mariadb取代mysql
mysql 相信大家都很清楚是什么了。那么mariadb是什么呢?
mariadb数据库管理系统是mysql的一个分支。是由mysql之父michael开发的。开发这个分支的原因之一是:甲骨文公司收购了mysql后,有将mysql闭源的潜在风险,因此社区采用分支的方式来避开这个风险
那么两者之间的性能谁好谁差呢,我们现在就在同一台电脑上简单的测试下
我的笔记本环境是
cpu :i3
硬盘:普通机械硬盘(5400转)
内存:8g
系统:win10 64位
mysql版本:5.6
mariadb版本:10.3
下面分别在mysql 和mariadb 建库建表 插入千万级的测试数据 id为主键,数据库引擎:myisam
查询语句均在navicat下运行
1.先查询九百万条后的20条数据 就是下面这个语句
select * from usertb limit 9000000,20
mysql 的处理时间是3.09秒
mariadb的运行时间是1.89秒
2.查询九百万条后的20条数据 根据id倒序 就是下面这个语句
select * from usertb order by id desc limit 9000000,20
mysql用时121.26秒
mariadb用时75.73秒
3.最后我们换条sql语句来测试。用下面的sql语句(mysql 常用的优化分页的语句):
select * from usertb where id<(select id from usertb order by id desc limit 9000000,1) order by id desc limit 20
mysql 用时3.13秒
mariadb却用了70秒
为什么呢?个人猜想也是不是mariadb的子查询没有mysql的快?于是再次测试
将上面的语句拆分成两条sql语句在mariadb里执行查询如下:
select id from usertb order by id desc limit 9000000,1
得出id是1000000
再查询 select * from usertb where id<1000000 order by id desc limit 20
发现两条sql语句一起执行的时间也是3秒左右
总结:两个数据库各有优势 找到自己合适的优化方式就好,咱是小白一个 不会优化 以上是无聊时的测试。
推荐阅读
-
浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)
-
MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
-
mysql和oracle的区别小结(功能性能、选择、使用它们时的sql等对比)
-
Docker同时安装MySQL和MariaDB的方法步骤
-
Java和Go性能的简单比较(mysql query)
-
自动备份mysql和mariadb数据库的代码实现教程
-
MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
-
浅谈mysql中int(1)和int(10)的区别
-
浅谈MyISAM 和 InnoDB 的区别与优化_MySQL
-
MySQL/MariaDB中的事务和事务隔离级别