高效能MySQL分支MariaDB、Percona、Drizzle大比拼
導讀:儘管MySQL是最受歡迎的程式之一,但是許多開發人員認為有必要將其拆分成其他專案,並且每個分支專案都有自己的專長。該 需求以及Oracle對核心產品增長緩慢的擔憂,導致出現了許多開發人員感興趣的子專案和分支。本文將討論受人們關注的三個流行MySQL分 支:Drizzle、MariaDB和Percona Server(包括XtraDB引擎)。文中簡要介紹每個分支出現的原因及其目標,以及是否可在您自己的生產環境中使用它們。
文章內容如下:
簡介
MySQL是歷史上最受歡迎的免費開源程式之一。它是成千上萬個網站的資料庫骨幹,並且可以將它(和Linux)作為過去10年裡Internet呈指數級增長的一個有力證明。
那麼,如果MySQL真的這麼重要,為什麼還會出現越來越多的核心MySQ產品的高階衍生產品?這是因為MySQL是免費的開源應用程式,所以開發 人員總是可以獲得其程式碼,並按照自己的想法修改程式碼,然後再自行分發程式碼。在很長的一段時間裡,在開發人員自己的生產環境中,沒有任何值得信任的 MySQL分支。但是,這種情況很快就發生了改變。有幾個分支引起了許多人的關注。
為什麼要進行分支?
為什麼需要對MySQL進行分支?這是一個非常合理的問題。成千上萬的網站依賴於MySQL,並且對許多人來說,它似乎是一個很好的解決方案。但 是,通常就是這樣,適合許多人並不一定適合所有人。這促使一些開發人員想要根據自己的需要開發出更好的解決方案。還有什麼能比將良好的解決方案轉換為完美 的解決方案更好的呢?。
下面我們將介紹這些分支尋求改變的更多細節。一些分支認為MySQL變得太臃腫了,提供了許多使用者永遠不會感興趣的功能,犧牲了效能的簡單性。如果 人們對更精簡的MySQL 4特別滿意,那麼為什麼還要在MySQL 5中新增額外的複雜性呢?對於此分支來說,更好的MySQL分支應該更簡單、更快捷,因此提供的功能也較少,但這樣會使這些功能極其迅速地發揮作用,並且 牢記目標受眾,在本例中,目標受眾是高可用性網站。
對於其他分支來說,MySQL並沒有提供足夠多的新功能,或者是新增新功能的速度太慢了。他們可能認為MySQL沒有跟上高可用性網站的目標市場的 發展形勢,這些網站運行於具有大量記憶體的多核處理器之上。正如熟悉MySQL的人所知道的那樣,MySQL提供了兩種儲存引擎:MyISAM和 InnoDB。這一分支認為這兩種儲存引擎都沒有提供他們所需的內容,因此他們建立了一種非常適合其目標的新儲存引擎。
此外,一些分支的最高目標是成為MySQL的替代產品,在這些產品中,您可以輕鬆地訪問它們的分支,無需更改任何程式碼。該分支使用與MySQL相同 的程式碼和介面,因此使過渡變得非常容易。但是,另一個分支聲稱它與MySQL不相容,需要更改程式碼。每個分支的成熟度各不相同,一些分支聲稱已經準備就緒 可以投入生產,而另外一些則聲稱目前自己還遠達不到這一最高目標。
最後,關於MySQL在Oracle下將如何發展仍不太確定。Oracle收購了Sun,也收購了MySQL,現在Oracle控制MySQL產品 本身,並領導開發社群開發新的成品。由於Oracle已經有了一個商業資料庫,因此人們擔心他們可能沒有足夠的資源來使MySQL保持其領先地位。因此, 許多分支也是這些潛在擔心所產生的結果,他們擔心MySQL作為領先的免費開源資料庫提供的功能可能太少、釋出週期太慢並且支援費用更昂貴。
XtraDB
XtraDB是一款獨立的產品,但它仍被認為是MySQL的一個分支。XtraDB實際上是基於MySQL的資料庫的一個儲存引擎。XtraDB被 認為是已成為MySQL一部分的標準MyISAM和InnoDB的一個額外儲存引擎。MySQL 4和5使用預設的MyISAM儲存引擎安裝每個表。InnoDB也是一個相對較新的儲存引擎選擇,在建立資料庫時,資料庫管理員和開發人員可以基於每個表 選擇儲存引擎型別。兩個儲存引擎的主要區別是:MyISAM沒有提供事務支援,而InnoDB提供了事務支援。其他差別是許多細微的效能差別,與 MyISAM相比,InnoDB提供了許多細微的效能改進,並且在處理潛在的資料丟失時提供了更高的可靠性和安全性。似乎InnoDB是用於未來改進的更 適合的儲存引擎,因此從版本5.5開始,MySQL已將預設儲存引擎從MyISAM更改為InnoDB。
基於這些優勢,InnoDB儲存引擎本身拆分出了一個分支,一個名為XtraDB的更新的儲存引擎。這個儲存引擎有多新呢?它3年前由 Percona首次釋出,因此它相對較新。它是專門針對在現代伺服器上執行的現代高可用性網站設計的。它被設計為在具有十幾個或更多核心和大記憶體 (32GB及更多)的伺服器上執行。任何公司都可以從伺服器管理公司購買這些型別的伺服器,因此應將資料庫設計為能夠充分利用這些伺服器。
XtraDB分支有另一個目標,即成為InnoDB儲存引擎的簡單替代,這樣使用者就可以輕鬆地切換其儲存引擎,無需更改任何現有的應用程式程式碼。XtraDB必須能夠向後相容InnoDB,以提供它們想要新增的所有新功能和改進。它們實現了此目標。
XtraDB的速度有多快?我找到的一個性能測試表明:與內建的MySQL 5.1 InnoDB 引擎相比,它每分鐘可處理2.7倍的事務。(請參見參考資料)。速度顯然是一個不可以忽略的因素,在考慮替代產品時更是如此。
Percona
與內建的MySQL儲存引擎相比,XtraDB提供了一些極大的改進,但它不是一款獨立產品,也無法輕鬆放入現有MySQL安裝。因此,如果您想使用這款新引擎,則必須使用提供它的產品。
Percona Server就是這樣一款產品,由領先的MySQL諮詢公司Percona釋出。Percona Server是一款獨立的資料庫產品,為使用者提供了換出其MySQL安裝並換入Percona Server產品的能力。通過這樣做,就可以利用XtraDB儲存引擎。Percona Server聲稱可以完全與MySQL相容,因此從理論上講,您無需更改軟體中的任何程式碼。這確實是一個很大的優勢,適合在您尋找快速效能改進時控制質 量。因此,採用Percona Server的一個很好的理由是,利用XtraDB引擎來儘可能地減少程式碼更改。
此外,他們是XtraDB儲存引擎的原作者。Percona將此程式碼用作開原始碼,因此您可以在其他產品中找到它,但引擎的最初建立者與編寫此產品的是同一個人,所以您可以隨心所欲地使用此資訊。
下面是Percona Server的宣告,該宣告來自它們自己的網站:
可擴充套件性:處理更多事務;在強大的伺服器上進行擴充套件
效能:使用了XtraDB的Percona Server速度非常快
可靠性:避免損壞,提供崩潰安全(crash-safe)複製
管理:線上備份,線上表格匯入/匯出
診斷:高階分析和檢測
靈活性:可變的頁面大小,改進的緩衝池管理
Percona團隊的最終宣告是“Percona Server是由Oracle釋出的最接近官方MySQL Enterprise發行版的版本”,因此與其他更改了大量基本核心MySQL程式碼的分支有所區別。Percona Server的一個缺點是他們自己管理程式碼,不接受外部開發人員的貢獻,以這種方式確保他們對產品中所包含功能的控制。
MariaDB
另一款提供了XtraDB儲存引擎的產品是MariaDB產品。它與Percona產品非常類似,但是提供了更多底層程式碼更改,試圖提供比標準 MySQL更多的效能改進。MariaDB直接利用來自Percona的XtraDB引擎,由於它們使用的是完全相同的引擎,因此每次使用儲存引擎時沒有 顯著的差別。
此外,MariaDB提供了MySQL提供的標準儲存引擎,即MyISAM和InnoDB。因此,實際上,可以將它視為MySQL的擴充套件集,它不僅 提供MySQL提供的所有功能,還提供其他功能。MariaDB還聲稱自己是MySQL的替代,因此從MySQL切換到MariaDB時,無需更改任何基 本程式碼即可安裝它。
最後可能也是最重要的一點是,MariaDB的主要建立者是Monty Widenius,也是MySQL的初始建立者。Monty成立了一家名為Monty Program的公司來管理MariaDB的開發,這家公司僱傭開發人員來編寫和改進MariaDB產品。這既是一件好事,也是一件壞事:有利的一面在於 他們是Maria功能和bug修復的佼佼者,但公司不是以贏利為目的,而是由產品驅動的,這可能會帶來問題,因為沒有贏利的公司不一定能長久維持下去。
AliSQL(阿里雲成為 MariaDB 白金贊助商)
AliSQL是基於MySQL官方版本的一個分支,由阿里雲資料庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲資料庫服務。該版本在社群版的基礎上做了大量的效能與功能的優化改進。尤其適合電商、雲端計算以及金融等行業環境。
阿里雲資料庫資深專家丁奇介紹,AliSQL版本在強度和廣度上都經歷了極大的考驗。最新的AliSQL版本不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL等社群汲取精華,也沉澱了阿里巴巴多年在MySQL領域的經驗和解決方案。AliSQL增加更多監控指標,並針對電商秒殺、物聯網大資料壓縮、金融資料安全等場景提供個性化的解決方案。
MariaDB 基金會今天宣佈,阿里巴巴集團的雲端計算部門阿里雲已經成為其白金贊助商,將幫助基金會確保在 MariaDB 生態系統中的連續性和開放協作,並推動大眾採用,服務於不斷增長的使用者和開發人員社群。
“阿里雲致力於為開源社群做出貢獻,併為世界各地的開發人員提供支援。今天,我們的關係資料庫服務(ApsaraDB for RDS)上運行了超過十萬個 MySQL 例項。我們期待與 MariaDB 生態系統的所有參與者密切合作。“ 阿里雲的首席架構師唐洪說。
阿里雲已經為 Maria DB 基金會的開發者提供贊助 —— 彭立勳,他專門從事複製工作,並專注於增強 MariaDB 資料庫伺服器的複製功能,還支援將 AliSQL(阿里巴巴的開源 MySQL 分支)補丁合併到 MariaDB 。
MySQL 和 MariaDB 的創始人 Monty Widenius 表示:“我非常自豪阿里巴巴加入 MariaDB 基金會。阿里巴巴給我留下了深刻的印象,他們對 AliSQL 的開放態度以及他們在 MariaDB 開發方面的合作。我期待著在 MariaDB 基金會和外界繼續與阿里巴巴合作,將 MariaDB 推向更高的層次。
Drizzle
本文介紹的最後一款產品是Drizzle。與之前介紹的兩款產品不同,Drizzle與MySQL有很大差別,甚至聲稱它們不是MySQL的替代產 品。他們期望對MySQL進行一些重大更改,想要提供一種出色的解決方案來解決高可用性問題,即使這意味著要更改我們已經習慣了的MySQL的各個方面。
在公司的FAQ頁面,閱讀其中提供的問題時就會發現,Drizzle進一步地強調了其基本目標。他們不滿意MySQL 4.1版本之後對MySQL程式碼進行的一些更改,聲稱許多開發人員不想花費額外的錢。他們承認其產品與SQL關係資料庫甚至是不相容的。這確實與 MySQL有很大的不同。
與習慣的MySQL有如此大的變化,我們為什麼還要考慮這款產品呢?準確地講,原因與上面的是相同的,Drizzle是MySQL引擎的一次重大修 改,它清除了一些表現不佳和不必要的功能,將很多程式碼重寫,對它們進行了優化,甚至將所用語言從C換成了C++,以獲得所需的程式碼。此外,Drizzle 並沒有就此結束脩改,該產品在設計時就考慮到了其目標市場,即具有大量內容的多核伺服器、執行Linux的64位機器、雲端計算中使用的伺服器、託管網站的 伺服器和每分鐘接收數以萬計點選率的伺服器。這是一個相當具體的市場。它太具體了嗎?請記住這些型別的公司目前在其資料庫方面投入的資金,如果他們可以安 裝Drizzle而不是MySQL,那麼他們的伺服器成本將削減一半,可以節省很多錢!
那麼,是不是所有人都應該使用Drizzle呢?等等,正如Drizzle反覆指出的那樣,它與MySQL不相容。因此,如果您現在使用的是MySQL平臺,那麼需要重寫大量程式碼,才能使Drizzle在您的環境中正常工作。
儘管需要額外的工作才能讓它執行,但它並不像Percona或MariaDB那樣快速且易於使用。我之所以介紹Drizzle,是因為儘管目前它可 能不是您的選擇,但幾年之後,它很可能會成為一些人的選擇。因為本文的目標是提高您對未來使用的工具的認識,所以這是向您介紹此產品的好機會。許多領先的 DB專家相信Drizzle將成為未來5年內高可用性資料庫安裝的選擇。
Drizzle是完全開源的產品,公開接受開發人員的貢獻。它不像MariaDB那樣有支援其開發的公司,也不像Percona那樣有大量外部開發人員為其提供貢獻。Drizzle有很好的成長空間並會提供一些新功能,但可能需要重寫大部分MySQL程式碼。
TokuDB
TokuDB是一個面向大資料,支援事務的儲存引擎,有著非常好的隨機寫效能的引擎
下面是本文中介紹的三款 MySQL 分支產品的概述。
產品 | 價格 | 目標 | 主要功能 | 是否可投入生產? |
---|---|---|---|---|
Percona Server | 免費 | 提供 XtraDB 儲存引擎的包裝器和其他分析工具 | XtraDB | 是 |
MariaDB | 免費 | 擴充套件 MySQL 以包含 XtraDB 和其他效能改進 | XtraDB | 是 |
Drizzle | 免費 | 提供比 MySQL 更強大的可擴充套件性和效能改進 | 高可用性 | 是 |
結束語
本文介紹了 MySQL 產品的三個新分支,旨在解決它們使用 MySQL 時遇到的一些問題。這三個分支都是免費的開源產品。在使用時,您需要根據 MySQL 已提供的功能來權衡它們的優缺點。我相信,對於閱讀本文的大多數人來說,MySQL 將仍然 是滿足資料庫需求的首選。我很懷疑閱讀本文的大多數讀者都是每小時擁有 1,000,000 點選率的網站的所有者。我想再次強調的是,MySQL 仍然是一款非常出色的產品,是一個非常適合大多數使用情況的資料庫。
但是,對於那些認為自己的網站需要比目前 MySQL 所能提供的更高的可用性、可擴充套件性和效能的人來說,這 3 款產品中的任意一款產品都可能為您提供所需的解決方案。更進一步地說,如果您認為您的網站將成為 能獲得很多利潤的網站,那麼可以考慮使用三款產品中的一款產品,在問題出現之前解決它們。
最後,出現這些 MySQL 分支的根本原因是:一些創作者想更改 MySQL 的一些基本功能,因為他們無法等到 MySQL 自己完成這些工作。此外,Oracle 的現狀威脅到了 MySQL 的未來,並且許多開發人員(包括 MySQL 的原始開發人員)都擔心該產品的未來,他們還擔心 Oracle 是否會投入精力保持該產品的領先資料庫的地位。這些擔憂在我看來都是合理的,因此在我們邁向未來時要牢記這些產品。
文章出處: IBM developerWorks
目前而言,mariadb在企業中用的比percona server少一點;
mariadb 的開源態度更好一點,percona server的企業服務更好;