最新公告
  • 欢迎光临数据科学与编程,我们是数据学科学兴趣交流小组立即加入我们
  • 再见,MySQL!性能被 MariaDB 吊打…

    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年使用GPL协议开源。

    2001年,MySQL生命中的大事发生了,那就是存储引擎InnoDB的诞生!直到现在,MySQL可以选择的存储引擎,InnoDB依然是No.1。MySQL 系列面试题的答案我也都整理好了,在公众号Java技术栈发送关键字面试进行阅读。

    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时代。

    2010年12月,MySQL 5.5发布,Oracle终于把InnoDB做成了MySQL默认的存储引擎,MySQL从此进入了辉煌时代。

    然而,从那之后,Oracle对MySQL的态度渐渐发生了变化,Oracle虽然宣称MySQL依然尊少GPL协议,但却暗地里把开发人员全部换成了Oracle自己人,开源社区再也影响不了MySQL发展的脚步,真正有心做贡献的人也被拒之门外,MySQL随时都有闭源的可能……

    横空出世的MariaDB是什么鬼

    先提一下MySQL名字的由来吧,Michael Widenius的女儿的简称就是MY,Michael Widenius大概也是把MySQL当成自己的女儿吧。

    看着自己辛苦养大的MySQL被Oracle搞成这样,Michael Widenius非常失望,决定在MySQL走向闭源前,将MySQL进行分支化,依然是使用了自己女儿的名字MariaDB(玛莉亚DB)。

    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。

    测试环境

    本性能测试环境如下:

    • CPU:I7
    • 内存:8G
    • OS:Windows 10 64位
    • 硬盘类型:SSD
    • MySQL:8.0.19
    • MariaDB:10.4.12

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

    插入性能

    单条插入

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

    条数数据库 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倍左右。

    批量插入

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

    条数数据库 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。

    查询性能

    经过了多次插入测试,我两个数据库里插入了很多数据,此时用下面的sql查询表中的数据量:

    结果两个表都是6785000条,MariaDB用时3.065秒,MySQL用时6.404秒。此时我机器的内存用了6个G,MariaDB用了474284 K,MySQL只用了66848 K。看来MariaDB快是牺牲了空间换取的。

    无索引

    有索引

    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秒

    有些结果添加了索引后还不如不加索引时理想,说明实际使用时并不是每个字段都需要添加索引的。

    总结

    在上面的测试中MariaDB的性能的确优于MySQL,看来各大厂商放弃MySQL拥抱MariaDB还是非常有道理的。

    作者:swanmy
    本文链接:https://blog.csdn.net/zhmh326/article/details/104168710
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
    数据科学与编程 » 再见,MySQL!性能被 MariaDB 吊打…

    发表评论

    • 52会员总数(位)
    • 307资源总数(个)
    • 40本周发布(个)
    • 1 今日发布(个)
    • 329稳定运行(天)

    提供最优质的博文资源集合

    立即阅览 了解详情