在MySQL經曆了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處於停滯發展的情況,在可以預見的未來,MySQL是肯定會被Oracle擱置並且逐步雪藏消滅掉的。MySQL隨著相應的各主創和內部開發人員的離去,締造了各個不同的引擎和分支,讓MySQL有希望繼續發揚光大起來。
本文大致講解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的發展和現狀,以及MySQL主幹以外的分支的狀況,為了我們未來更好的使用MySQL或者其他分支建立一個瞭解基礎。
MySQL儲存引擎介紹
Falcon儲存引擎
Falcon儲存引擎是MySQL當時寄以厚望的儲存引擎,主要是為了面對當時Oracle收購了InnoBase公司的情況,用來取代InnoDB的一個儲存引擎。Falcon引擎的主導人員是大師Jim Starkey,從2006年開始開發,到2008年發布Beta版本,至今為止也沒有走入主流。2008年中旬,Falcon的主架構師Jim Starkey宣布從MySQL公司辭職,加入了一家創業公司NimbusDB擔任CEO,去設計和開發運行在雲端運算上面的關係/語義資料庫,按照2010年目前NoSQL市場的發展來看,他的選擇是正確的,但是帶來的結果是Falcon陷入一個沒有主導人員的地步,導致了至今都屬於效能糟糕,半死不活的狀態。
Falcon引擎是MySQL AB公司基於Netfrastrucure公司的產品開發的(Netfrastrucure公司被MySQL AB收購),Falcon 當初的目標是嵌入到MySQL 6.0中用來取代InnoDB引擎,基本很多功能設計都是按照InnoDB的目標去設計的。
Falcon是面向多CPU、擁有大量記憶體的當代硬體環境和典型Web應用的 資料庫操作特點而開發的,主要功能包括多版本並發控制、完善的ACID支援、支援首碼壓縮的B+樹索引、資料頁壓縮(在磁碟上以壓縮形式儲存,在記憶體中以 非壓縮形式儲存)、成組提交等。從功能方面來說沒有什麼新鮮事,大體也就實現了一個事務型儲存引擎必須要有的功能(很多進階的功能如多資料表空間、分區等都還 沒有),但其架構上卻有很多獨特之處。
通過網上的一些測試結果Falcon的效能還是很糟糕的,寫入速度是 MyISAM 的 1/10 ~ 1/20,Select 的最佳化也有問題,添加了索引感覺還會進行全表掃描。所以,我終究感覺 Falcon 是個杯具的引擎。
Falcon特性:http://dev.mysql.com/doc/falcon/en/se-falcon-features.html
Falcon測試:http://blog.gslin.org/archives/2008/02/12/1425/
Falcon手冊:http://dev.mysql.com/doc/falcon/en/
SolidDB儲存引擎
SolidDB儲存引擎是由Solid Information Technology(http://www.SolidDB.com) 開發的,這是一款利用MVCC來實現的事務型儲存引擎。它既同時支援悲觀和開放式並行存取控制,這一點其他的儲存引擎目前都不支援。solibDB的MySQL 版本包括對外鍵的完全支援。它在許多方面與InnoDB很相似,比如它使用了簇索引。SolidDB還包括一個沒有額外開銷的線上備份功能。
SolidDB公司已經由2008年被IBM收購,主要是用於整合為IBM資料庫整合方案的一部分,目前是作為一個前端資料緩衝的這麼一個角色存在。IBM收購SolidDB公司,主要是因為甲骨文在2005年6月收購了Solid Information Technology主要競爭者TimesTen,為了在記憶體資料庫這塊市場上有所依託,所以收購了 SolidDB公司。
SolidDB產品是一個完整的打包程式,包括SolidDB儲存引擎、MyISAM儲存引擎以及MySQL伺服器。SolidDB與MySQL之間的結合出現於2006年的晚些時候。但是底層的技術以及代碼卻是經過了該公司15年的完善。Solid公司保證和支援了整個產品。它是基於GPL協議的,並且提供了一個類似於MySQL伺服器形式的商業版本。
效能上來說,SolidDB for MySQL開來源資料庫再次被證明能夠完全滿足高輸送量、關鍵任務級應用對系統效能和可擴充性的要求。
但是就 SolidDB被IBM收購,MySQL對Oracle收購的情況來看,基本上 SolidDB for MySQL 是一個沒法繼續被MySQL使用的引擎,所以也是一個杯具的MySQL引擎。
官方網站:http://www.ibm.com/software/data/SolidDB/
XtraDB儲存引擎
XtraDB儲存引擎是percona公司對於innodb儲存引擎進行改進加強後的產品,第一個版本發佈於2008年底。XtraDB相容innodb的所有特性,並且在IO效能,鎖效能,記憶體管理等多個方面進行了增強。
Percona是一個MySQL技術諮詢公司,他們有一個在MySQL領域很有名的技術部落格叫做 Mysql Performance Blog,同時他們編寫了一本很有名的MySQL書叫做《High Performance MySQL》,目前也出版了中文版。他們公司還有一個很有名的MySQL備份工具叫做 XtraBackup。
XtraDB的設計目標也是取代InnoDB作為目標,它是基於InnoDB來做的開發,XtraDB 100%的相容 InnoDB,通常可以認為 XtraDB 是 InnoDB的升級或者替代版本。在效能上來說,目前 XtraDB 是非常高的,在大部分情況下也是比較穩定的,值得你嘗試使用。同樣XtraDB也是未來感覺很有前途的一個儲存引擎,值得我們期待。
效能測試:http://www.mysqlperformanceblog.com/2009/07/14/performance-improvements-in-percona-5-0-83-and-xtradb/
使用方式:http://www.ningoo.net/html/2009/xtradb_storage_engine.html
引擎介紹:http://www.percona.com/docs/wiki/percona-xtradb:start
引擎下載:http://www.percona.com/percona-builds/Percona-XtraDB/
公司官網:http://www.percona.com
效能部落格:http://www.mysqlperformanceblog.com
Maria儲存引擎
Maria由MySQL的創始人,MyISAM的作者Monty (Michael Widenius) 開發,命名為Maria是因為他的第三個小孩就叫Maria。Maria是Monty在MySQL公司的時候就開始開發的一個MySQL的分支引 擎,Sun收購MySQL後,因為與Sun針對MySQL團隊的一些問題不和,然後在2009年初離開了Sun,成立了 Monty Program Ab 公司,專門用於針對 Maria 引擎的開發,同時開發了一個MySQL的分支,叫做 MariaDB。
Maria是一個MySQL的儲存引擎,利用它來擴充MyISAM使之在異常退出時檔案不至於損壞。Maria的主要目的是作為更好的 MyISAM,提供崩潰後的故障恢複功能。更長遠的目標是成為一個全功能的事務型儲存引擎,支援ACID、復原、多版本並發控制、行級鎖、成組提交,同時 也可以選擇不支援事務,最終代替MyISAM成為MySQL的預設儲存引擎。
目前Maria引擎有針對MySQL 5.1 的版本,基本上就是一個增加了崩潰恢複功能的MyISAM,使用表級鎖,但可以做到讀寫不衝突,即在進行任何類型的更新操作的同時都可以進行讀操作,但多個寫操作不能並發。
Maria的特點:
◆多版本並發控制,ACID支援
◆通過拷貝日誌就能進行增強備份
◆高效的磁碟儲存
Maria 引擎開發之初就是用來取代MyISAM的儲存引擎,並且目前按照我瞭解有些在使用公司的情況,運行情況挺不錯,大家也可以嘗試一下。Maria 在目前有MySQL創始人帶領的情況下,也是一個非常有前途的的儲存引擎,值得期待。
Maria下載:http://askmonty.org/wiki/MariaDB:Download
Maria手冊:http://askmonty.org/wiki/Maria
PrimeBase XT (PBXT) 儲存引擎
PBXT 是 PrimeBase 公司推出的MySQL外掛程式引擎,其功能和 InnoDB 類似,它是一款事務型儲存引擎,並且它的設計是很獨特的。它的一個很與眾不同的特徵就是如何來使用交易記錄和資料檔案來防止“write-ahead”日 志,這可以極大的減少事務提交的開銷。這個架構給了PBXT很大的提高寫並發的空間,並且測試也表明它在某些特定的操作下比InnoDB要快。PBXT也 使用了MVCC並且支援外鍵約束,但是它不使用簇索引。
主要特性如下:
◆MVCC的 :多版本並發控制,使讀操作沒有鎖定
◆事務性 :支援啟動開始,COMMIT和ROLLBACK和恢複上
◆ACID標準 :原子性,一致性,隔離,持久(一次提交的更改不能丟失)
◆行級鎖定 :更新使用行級鎖的並發允許最大並發量
◆死結檢測 :立即通知如果用戶端進程已陷入死結
◆參照完整性 :外鍵的支援。
◆寫一次 :PBXT避免的架構雙寫入使用日誌。
◆BLOB的流 :在結合的 BLOB Streaming engine.。
按照有人的測試結果來看,PBXT儲存引擎版本的TPS隨著線程數的增長,表現比較穩定,效能上與innodb差不多,長期來看,它的目標也是作為 一個能夠取代InnoDB的儲存引擎。而且目前 MariaDB 這個分支已經把 PBXT 作為內建的儲存引擎,所以也是可以嘗試使用的一個引擎。
效能測試:http://imysql.cn/2008_07_25_innodb_vs_pbxt
引擎下載:http://www.primebase.org/download/index.php
官方網站:http://www.primebase.org/
MySQL分支介紹
MariaDB 資料庫
MariaDB 是一個採用 Maria 儲存引擎的 MySQL 分支版本,是由原來 MySQL 的作者 Michael Widenius (Monty) 創辦的Monty Program Ab公司所開發的免費開源的資料庫伺服器。基本上 MariaDB 的曆史跟我上面講的 Maria 儲存引擎曆史一樣。MariaDB的設計目標就是用來取代 MySQL Server。Monty是開來源資料庫聯盟(Open Database Alliance)的發起者,所以 MariaDB 也是開來源資料庫同盟成員。
MariaDB基於事務的Maria儲存引擎,替換了MySQL的MyISAM儲存引擎,它使用了Percona的 XtraDB引擎來替換InnoDB,MariaDB的儲存引擎還包括了 PrimeBase XT (PBXT) 和 FederatedX 儲存引擎,MariaDB基於GPL 2.0發布。
Monty Widenius提供了MySQL的分支MariaDB候選版本。MariaDB 5.1完全相容MySQL 5.1,這個版本早在2008年11月就發布了,增加了很多新的功能和若干個新的補丁程式。開發人員稱這個候選版本非常穩定。基本上 MySQL,MariaDB 解決了很多問題,例如“pool of threads”功能提供解決多資料連線問題。目前 MariaDB 發布的Release版本是 5.1.44,基本上應該是跟 MySQL 5.1 的版本相容的。
MariaDB 基本上名門之後,加上MySQL創始人Monty的實力和號召力,是作為MySQL一個非常好的替代品,前途發展無限,值得我們嘗試使用。
MariaDB中儲存引擎介紹:
Maria: http://askmonty.org/wiki/Maria
XtraDB:http://www.percona.com/docs/wiki/percona-xtradb:start
PBXT: http://www.primebase.org/
FederatedX:https://launchpad.net/federatedx
MariaDB下載:http://askmonty.org/wiki/MariaDB:Download
MariaDB網站:http://askmonty.org
[ Drizzle 資料庫]
Drizzle,是從MySQL衍生出來的一個資料庫伺服器,一個精簡版的MySQL分支,Drizzle項目的宗旨是構建一個“更精練、更輕量、更快 速”的MySQL版本,它的擴充性和易用性與MySQL相當,但為了提高效能和擴充性,它從原來的核心系統裡移除了部分功能。 Drizzle 也是開來源資料庫聯盟(Open Database Alliance)成員。
MySql的架構設計總監Brian Aker在O’Reilly開放源碼大會(OSCON)上對Drizzle做了介紹。Drizzle是一個能為某些特定類別的應用提供支援的資料庫專案(“what if” project)。Drizzle的設計目標: