緣起
自從甲骨文公司收購了MySQL后,有將MySQL閉源的潛在風險。而且Oracle對培養MySQL這個免費的兒子並不太用心,漏洞修補和版本升級的速度一段時間非常緩慢,所以業界對MySQL的未來普遍不抱有樂觀態度。因此社區采用分支的方式來避開這個風險,例如谷歌、Facebook、RedHat都將MySQL替換成了衍生版,國內也有企業紛紛放棄了MySQL官方版,像阿里和騰訊還做起了自己的MySQL衍生版。
目前MySQL領域存在着眾多的衍生版數據庫,主流的有官方MySQL、MariaDB以及Percona Server,小眾一些的還有阿里的OceanBase和騰訊的CDB等等。那么Percona和MariaDB這兩個主要的MySQL分支是怎么產生的呢?
MariaDB
起初MySQL之父Monty在1979年寫下MySQL的第一行代碼,后來逐漸創建起MySQL公司,后將其以10億美金賣給Sun,結果Sun又把MySQL轉手賣給Oracle,Monty憤而出走,以MySQL5.5為基礎創造了MariaDB數據庫,這樣就誕生出了MySQL分支里知名度最高的一個衍生版。
Percona Server
Percona Server是MySQL咨詢公司Percona發布的性能最接近MySQL企業版的MySQL產品。Percona公司在MySQL數據庫優化方面做了非常多的工作,以至於Percona Server數據庫是MySQL眾多分支中,在高負載、高並發情況下表現非常突出,乃至阿里巴巴的OceanBase數據庫都要借鑒Percona Server。
性能接近
其實在正常情況下,MariaDB和Percona Server的性能是差不多的,為什么是這樣呢?
MySQL 4和5使用MyISAM作為默認存儲引擎。從MySQL 5.5開始,就將默認存儲引擎從MyISAM更改為InnoDB。這是因為長期以來MyISAM沒有提供事務支持,使得MySQL游離在數據強一致性的門檻之外,正是InnoDB的加入,在使得MySQL從Oracle市場份額中分一杯羹。
我們先看看MariaDB使用的存儲引擎。因為版權的原因,MariaDB一開始就放棄了InnoDB這個讓MySQL大放異彩的存儲引擎,最終選擇了XtraDB引擎作為InnoDB的替代。
一方面,XtraDB引擎能做到的向下兼容,創建數據表的時候,InnoDB引擎會自動被替換成XtraDB引擎,用戶和客戶端根本感覺不到MariaDB和MySQL的區別。另外一方面,XtraDB的對事務的良好支持,讓用戶也感受不到XtraDB和InnoDB的區別。另外,在多核CPU和大內存上,XtraDB性能比InnoDB更好。
說到這里還要補充一句,XtraDB引擎是Percona公司開發設計的,與MySQL5.1內置的InnoDB相比,單位時間執行事務數量是后者的2.7倍。而且在Percona Server上面默認使用的也是XtraDB引擎。所以說MariaDB和Percona Server在正常情況下的性能基本持平。但是在高並發和高負載的條件下,Percona Server的表現更好一些。
部署平台
MariaDB的跨平台性更好一些,支持Windows平台和Linux平台,但是不支持MacOS平台。如果在MacOS平台上安裝MacOS需要先安裝Brew。
Percona Server不支持跨平台,只能在Linux平台安裝
兼容性
MariaDB與Percona Server各自選擇了對MySQL兼容的方式。MariaDB的起點是MySQL5.5,然后對MySQL改造,並且與MySQL5.6以上版本存在很大的差別。比如在單表保存一對多關系數據上面,MariaDB選擇了DynamicColume(動態列)實現方式,而MySQL選擇的是JSON方式。雖然都是一對多關系,但是MariaDB動態列的方式使用非常繁瑣,也不支持數組格式,相反MySQL的實現就好很多。另外MariaDB的動態不支持索引,因此說按照動態列中的字段查找數據速度會很慢,而MySQL支持JSON索引,查詢速度會快很多。
Percona Server與MariaDB不同,它是先兼容MySQL然后再進行優化,所以用戶可以很容易的從MySQL遷移到Percona Server上面,而不用去考慮兼容性的問題。
選擇
選擇是痛苦的事情,對於MariaDB和Percona Server兩個數據庫,各大公司也存在分歧,淘寶使用的是Percona Server,而Google和Facebook則站在了MariaDB這邊。從中我們可以看出,注重數據庫穩定性和可靠性的企業都會選擇Percona Server,包括利用Percona Server組建的Percona XtraDB Cluster集群,都體現的嚴格的數據讀寫一致性,這對於商業系統來說極為重要,讀寫速度來說僅僅是第二位的。那些數據價值低,注重數據讀寫速度的企業,更喜歡使用MariaDB,因為用MariaDB組建Replication集群,在保存SEO搜索、論壇帖子、新聞資訊、社交信息上速度更快。
說到這里,選擇MariaDB還是Percona Server,唯一衡量的標志為是否存儲商業數據。
鏈接:http://www.imooc.com/article/30432