大数跨境
0
0

性能吊打 MySQL 的 MariaDB 你会选择吗

性能吊打 MySQL 的 MariaDB 你会选择吗 终码一生
2021-02-06
0
导读:也许只是时间的问题


戳蓝字“终码一生”关注我们!记得加个⭐标哦

 


      阅读本文预计需要2.5分钟
       
 




来源 | 整理自互联网


1


前言




在做选择之前,我们首先要知道这两个优秀的数据库之间有什么关联,以及他们各自的发展现状,然后,在比较他们的性能。最后做出对我们最有益的选择!


2


MySQL的发展



MySQL的历史可以追溯到1979年,是有 Michael Widenius 开发,他在开发一个报表工具的时候,设计了一套API,后来他的客户要求他的API支持SQL语句,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但是他总是感觉不满意,萌生了要自己做一套数据库的想法。


1996年,MySQL 1.0发布,仅仅过了几个月的时间,1996年10月MySQL 3.11.1当时发布了Solaris的版本,一个月后,Linux的版本诞生,从那时候开始,MySQL慢慢的被人所接受


1999年,Michael Widenius成立了MySQL AB公司,MySQL也开始由个人开发转变为团队开发


2000年MySQL使用了GPL协议,正式开源,大家对的热爱超乎想象,每个人都可以贡献自己的代码


2001年,MySQL生命中的大事发生了,那就是存储引擎 InnoDB 的诞生!直到现在,MySQL可以选择的存储引擎,InnoDB依然是No.1


2008年1月,MySQL AB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。Sun为MySQL的发展提供了绝佳的环境,2008年11月,MySQL 5.1发布,MySQL成为了最受欢迎的小型数据库

在此之前,Oracle在2005年就收购了InnoDB,因此,InnoDB一直以来都只能作为第三方插件供用户选择。2009年4月,Oracle公司以74亿美元收购Sun公司,MySQL也随之进入Oracle时代,至此,Java,MySQL均被Oracle收购。


2010年12月,MySQL 5.5发布,Oracle终于把InnoDB做成了MySQL默认的存储引擎,MySQL从此进入了辉煌时代
然而,也正是从这个时候,Oracle对MySQL的态度渐渐发生了变化,Oracle虽然宣称MySQL依然尊少GPL协议,但却暗地里把开发人员全部换成了Oracle自己人,开源社区再也影响不了MySQL发展的脚步,有心做贡献的开发者也被拒之门外,MySQL随时有闭源的可能

 

3


MariaDB的诞生



基于Oracle以往的诸多劣迹,MySQL被Oracle收购之后,随时都有闭源的可能,看着自己辛苦养大的MySQL被Oracle搞成这样,Michael Widenius非常的失望,于是,他将MySQL分支化,并起名MariaDB(以自己女儿的名字玛莉亚起名,据说MySQL也是以他女儿的名字简称MY命名)


所以,MariaDB是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB由MySQL的创始人Michael Widenius主导,由开源社区的大神们进行开发。因此,大家都认为,MariaDB拥有比MySQL更纯正的MySQL血脉


最初的版本更新与MySQL同步,相对MySQL5以后的版本,MariaDB也有相应的5.1~5.5的版本。后来MariaDB终于摆脱了MySQL,它的版本号直接从10.0开始,以自己的步伐进行开发,当然,还是可以对MySQL完全兼容。现在,MariaDB的数据特性、性能等都超越了MySQL

 

4


性能对比


相同硬件环境下,我们做如下测试,对比两个数据库的性能,

分别在MySQl和MariaDB中创建名为performance的数据库,并创建log表,都使用innodb作为数据库引擎:


  • 添加数据


1. 单条插入


单条插入的测试结果如下表所示:

条数\数据库 MySQL MariaDB
1000 0:00:04.397270 0:00:02.534988
2000 0:00:09.839936 0:00:04.822289
3000 0:00:15.934843 0:00:07.295792
4000 0:00:20.356583 0:00:08.895680
5000 0:00:23.735397 0:00:10.766463
6000 0:00:31.431234 0:00:16.583214
7000 0:00:36.413297 0:00:17.359391
8000 0:00:40.957255 0:00:18.281750
9000 0:00:47.125131 0:00:21.483223
10000 0:00:54.979244 0:00:24.445878
平均 0:00:00.005185 0:00:00.002409


MariaDB单条数据插入的性能比MySQL强1倍左右。

2. 批量插入

批量插入的测试结果如下表所示:

条数\数据库 MySQL MariaDB
1000 0:00:00.066978 0:00:00.019711
2000 0:00:00.086768 0:00:00.038898
3000 0:00:00.132641 0:00:00.084769
4000 0:00:00.100773 0:00:00.058774
5000 0:00:00.119664 0:00:00.178519
6000 0:00:00.313400 0:00:00.143641
7000 0:00:00.181570 0:00:00.251319
8000 0:00:00.295206 0:00:00.145611
9000 0:00:00.321140 0:00:00.124668
10000 0:00:00.328125 0:00:00.181082
平均 0:00:00.000035 0:00:00.000022


上面的测试结果,MariaDB并没有绝对优势,甚至有时还比MySQL慢,但平均水平还是高于MySQL。

  • 查询性能

经过了多次插入测试,两个数据库里插入了一些数据,下面的测试下查询性能:

SELECT COUNT(0FROM LOG


结果两个表都是6785000条,MariaDB用时3.065秒,MySQL用时6.404秒。

此时我机器的内存用了6个G,MariaDB用了474284 K,MySQL只用了66848 K。

MariaDB以空间换时间

1. 无索引

先查询一下time字段的最大值和最小值:

SELECT MAX(TIME), MIN(TIMEFROM LOG


MariaDB用时6.333秒,MySQL用时8.159秒。前者更快!
接下来测试过滤time字段在0点到1点之间的数据,并对time字段排序

SELECT * FROM LOG WHERE TIME > '2020-02-04 00:00:00' AND TIME < '2020-02-04 01:00:00' ORDER BY TIME


MariaDB用时6.996秒,MySQL用时10.193秒。
然后测试查询level字符是info的数据:


SELECT * FROM LOG WHERE LEVEL = 'info'


MariaDB用时0.006秒,MySQL用时0.049秒。
最后测试查询message字段值为debug的数据:


SELECT * FROM LOG WHERE MESSAGE = 'debug'


MariaDB用时0.003秒,MySQL用时0.004秒。

2. 有索引

分别对两个数据库的字段创建索引:


ALTER TABLE `performance`.`log`ADD  INDEX `time` (`time`),ADD  INDEX `level` (`level`),ADD FULLTEXT INDEX `message` (`message`);


MariaDB用时2分47秒,MySQL用时3分48秒。

再用上面的测试项目进行测试,结果如下表所示:


项目\数据库 MySQL MariaDB
查询time字段最值 0.006秒 0.001秒
过滤time字段并排序 0.398秒 0.020秒
查询level字段 0.065秒 0.049秒
查询message字段 0.003秒 0.005秒


5


总结


从上面的简单测试中可以看出,MariaDB性能要优于MySQL,再加上Oracle的一系列操作,看来大家投奔MySQL也只是时间的问题,当然,这只是一些简单的测试,如果你有兴趣,可以进一步对他进行测试,以评估他是否真的适合自己。这里不再过多的演示!


END

 


 


终码一生
长按扫描二维码
关注我们 获取更多技术资讯
微信号:zma_1314

 


往期推荐

【激活码】2021-02-05 最新激活码已经更新

蚂蚁金服开源增强版 SpringBoot 微服务框架 SOFABoot

Java16即将发布 你了解他的前世今生吗

官方6种免费获取 IntelliJ IDEA 激活码的方式

再见,Navicat!这个IDEA的兄弟,大赞!

有了这个插件  再也不用担心IDEA过期了


【声明】内容源于网络
0
0
终码一生
开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
内容 1876
粉丝 0
终码一生 开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
总阅读1.4k
粉丝0
内容1.9k