1. 程式人生 > >高效能MySQL分支MariaDB、Percona、Drizzle大比拼

高效能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的企業服務更好;