1. 程式人生 > >解析Mariadb與MySQL的區別

解析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

硬碟:普通機械硬碟(5400
轉)

MYSQL版本: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秒左右

總結:兩個資料庫各有優勢,找到自己合適的優化方式就好。