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开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!