解析Mariadb與MySQL的區別
MariaDB是MySQL原始碼的一個分支,隨著Oracle買下Sun,MySQL也落入了關係型資料庫王者之手。在意識到Oracle會對MySQL許可做什麼後便分離了出來(MySQL先後被Sun、Oracle收購),MySQL之父的Michael以他女兒Maria的名字開始了MySQL的另外一個衍生版本:MariaDB。這兩個資料庫究竟有什麼本質的區別沒有?
區別一:
MariaDB不僅僅是Mysql的一個替代品,MariaDB包括的一些新特性使它優於MySQL。
區別二:
MariaDB跟MySQL在絕大多數方面是相容的,對於開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本釋出速度已經超過了Oracle官方的MySQL版本。
MariaDB 是一個採用Aria儲存引擎的MySQL分支版本, 這個專案的更多的程式碼都改編於 MySQL 6.0
區別三:
通過全面測試發現,MariaDB的查詢效率提升了3%-15%,平均提升了8%,而且沒有任何異常發生;以qp為單位,吞吐量提升了2%-10%。由於缺少資料支援,現在還不能得出任何結論,但單從測試結果看來還是非常積極的。join中索引的使用以及查詢優化,特別是子查詢方面,MariaDB都有不少提升。此外,MariaDB對MySQL匯入匯出有良好支援。
下面進行簡單效能測試:
測試環境:
系統:win10 64位
cpu :I3
記憶體:8G
硬碟:普通機械硬碟(5400MYSQL版本:5.6
mariaDB版本:10.3
下面分別在MYSQL 和mariaDB 建庫建表 插入千萬級的測試資料 ID為主鍵,資料庫引擎:MyISAM
查詢語句均在Navicat下執行
1.先查詢九百萬條後的20條資料 就是下面這個語句
select * from usertb limit 9000000,20
mysql 的處理時間是3.09秒
mariaDB的執行時間是1.89秒
2.查詢九百萬條後的20條資料 根據ID倒序 就是下面這個語句
select * from usertb order by id desc limit 9000000,20
MYSQL用時121.26秒
MariaDB用時75.73秒
3.最後我們換條SQL語句來測試。用下面的SQL語句(MYSQL 常用的優化分頁的語句):
select * from usertb where id<(select id from usertb order by id desc limit 9000000,1) order by id desc limit 20
MYSQL 用時3.13秒
MariaDB卻用了70秒
為什麼呢?個人猜想也是不是MariaDB的子查詢沒有MYSQL的快?於是再次測試
將上面的語句拆分成兩條sql語句在MariaDB裡執行查詢如下:
select id from usertb order by id desclimit 9000000,1
得出ID是1000000
再查詢 select * from usertb whereid<1000000 order by id desc limit 20
發現兩條SQL語句一起執行的時間也是3秒左右
總結:兩個資料庫各有優勢,找到自己合適的優化方式就好。