关于java:横空出世的-MariaDB为啥能吊打-MySQL

6次阅读

共计 3816 个字符,预计需要花费 10 分钟才能阅读完成。

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。

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 作为数据库引擎:

CREATE TABLE `performance`.`log`(  
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `time` DATETIME NOT NULL,
  `level` ENUM('info','debug','error') NOT NULL,
  `message` TEXT NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8;
1234567

插入性能

单条插入

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

条数 \ 数据库 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 查问表中的数据量:

SELECT COUNT(0) FROM LOG

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

无索引

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

SELECT MAX(TIME), MIN(TIME) FROM 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 秒。

有索引

别离对两个数据库的字段创立索引:

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 秒

有些后果增加了索引后还不如不加索引时现实,阐明理论应用时并不是每个字段都须要增加索引的。

总结

在下面的测试中 MariaDB 的性能确实优于 MySQL,看来各大厂商放弃 MySQL 拥抱 MariaDB 还是十分有情理的。

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

近期热文举荐:

1.600+ 道 Java 面试题及答案整顿 (2021 最新版)

2. 终于靠开源我的项目弄到 IntelliJ IDEA 激活码了,真香!

3. 阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式公布,全新颠覆性版本!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0