MySQL的歷史能夠追溯到1979年,它的創始人叫做Michael Widenius,他在開發一個報表工具的時候,設計了一套API,後來他的客戶要求他的API支持sql語句,他直接藉助於mSQL(當時比較牛)的代碼,將它集成到本身的存儲引擎中。可是他老是感受不滿意,萌生了要本身作一套數據庫的想法。linux
一到1996年,MySQL 1.0發佈,僅僅過了幾個月的時間,1996年10月MySQL 3.11.1當時發佈了Solaris的版本,一個月後,linux的版本誕生,從那時候開始,MySQL慢慢的被人所接受。1999年,Michael Widenius成立了MySQL AB公司,MySQL由我的開發轉變爲團隊開發,2000年使用GPL協議開源。sql
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隨時都有閉源的可能……app
先提一下MySQL名字的由來吧,Michael Widenius的女兒的簡稱就是MY,Michael Widenius大概也是把MySQL當成本身的女兒吧。看着本身辛苦養大的MySQL被Oracle搞成這樣,Michael Widenius很是失望,決定在MySQL走向閉源前,將MySQL進行分支化,依然是使用了本身女兒的名字MariaDB(瑪莉亞DB)。ide
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做爲數據庫引擎:spa
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;
單條插入的測試結果以下表所示:.net
MariaDB 單條數據插入的性能比 MySQL 強1倍左右。
批量插入的測試結果以下表所示:
上面的測試結果,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秒。再用上面的測試項目進行測試,結果以下表所示:
有些結果添加了索引後還不如不加索引時理想,說明實際使用時並非每一個字段都須要添加索引的。
在上面的測試中MariaDB的性能的確優於MySQL,看來各大廠商放棄MySQL擁抱MariaDB仍是很是有道理的。
做者:swanmy
原文:blog.csdn.net/zhmh326/article/details/104168710