MYSQL vs MariaDB
相信在做技術的選擇的時候、應該會碰上類似的問題,到底要選那一種技術才符合目前的專案需求呢,所以在這邊做一個簡單的分析,希望可以幫助選用適合的技術。
自從MYSQL被Oracle 接手之後、每況愈下、其原因有許多,像是Enterprise 版封閉了source code 、未能快速傳達或修復安全問題…等等,所以Michael Widenius 決定fork一套出一套用他女兒命名的資料庫,叫 MariaDB。
以下提供幾個簡單的比較表
MYSQL | MariaDB | |
Storage Engines | MyISAM
InnoDB MRG_MYISAM MEMORY (HEAP) . . |
XtraDB
Aria ARCHIVE Cassandra . . |
Cluster | Built-in or Galera Cluster | Galera Cluster |
Cluster support storage engine | In Memory or InnoDB(Galera Cluster) | XtraDB |
Hot backups | mysqlbackup | mysqlbackup mysqlhotcopyXtraBackup |
Replication | V | V |
Partitioning | Range Hash List Key
|
Range Hash List Key |
因為是fork的關係,Mysql的功能MariaDB的幾乎都有,除了拿掉了Cluster之外,但相對的、也有對應的方案。
- Storage Engines方面,幾乎都都有取代的方案,像是MyISAM就改成Aria、InnoDB就是XtraDB,當然都有升級過,而且MariaDB多了更多選擇、還多了Cassandra(NOSQL)的方案。
- 在Replication跟Partitioning也是幾乎沒什麼差別的,像是MRG_MYISAM也用MERGE取代了。
- 在功能方面MariaDB也延申更多功能,像是Parallel Replication, Thread pooling, Multi-source replication, Dynamic Columns….etc。
Benchmark
參考資料:https://mariadb.org/maria-10-1-mysql-5-7-commodity-hardware/
https://www.softizy.com/blog/mariadb-10-1-mysql-5-7-performances-ibm-power-8/
在Beachmark中,找了二篇比較近代的文章做比較,在環境跟參數不同的情況下,會有不同的情況,所以多半只能做參考就好
- 這個作者結論是MYSQL(read-only)贏了,在相同的USER量的情況下、每秒Query到的資料量
MYSQL是優於MairaDB,相關的參數可以看第一篇文章
第二篇的比較就稍有趣一點,他做了開cache跟不開cache的比較
- 在不開Cache的情況下、也是MYSQL略勝一籌
- 在開cache的情況下、MariaDB大敗MYSQL
結論
維護:
目前MariaDB是MariaDB基金會在維護,MYSQL是Oracle在維護
一個是遵循open source的精神,一個確開始封閉
功能:
MariaDB確實很積極的在發展新功能,相對的MYSQL方面進步的確實很慢,尤其Storage engines 的選選在MariaDB多出了很多,這個系統設計上確實方便了許多
上手:
二個用起來幾乎是一樣的東西,如果熟MYSQL的人、用MariaDB應該是沒什麼感覺,比較可以無痛轉換
效能:
就上圖看起來、各有千秋
首先得再次強調,上圖只是參考用,無需引起派系的筆戰,因為硬體、系統、資料量、測試方式都有差,環境的變數因子太多了,無需在這上面做太多猜測跟想像。
但我個人認為選擇技術時、效能好不好只是選項之一,而是看需求跟熟悉度還有資源,有沒有調整過的效能是有極大的差距,不論是選MariaDB或MYSQL,但要如何做好調整、就得靠長期的經驗及使用的狀況,沒有一種最好的參數,只有最適合的參數。
我要留言