MySQL數(shù)據(jù)庫存儲引擎和分支現(xiàn)狀分析

mysql經(jīng)歷了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處于停滯發(fā)展的情況,在可以預(yù)見的未來,MySQL是肯定會被Oracle擱置并且逐步雪藏消滅掉的。

MySQL隨著相應(yīng)的各主創(chuàng)和內(nèi)部開發(fā)人員的離去,締造了各個不同的引擎和分支,讓MySQL有希望繼續(xù)發(fā)揚(yáng)光大起來。

在MySQL經(jīng)歷了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處于停滯發(fā)展的情況,在可以預(yù)見的未來,MySQL是肯定會被Oracle擱置并且逐步雪藏消滅掉的。MySQL隨著相應(yīng)的各主創(chuàng)和內(nèi)部開發(fā)人員的離去,締造了各個不同的引擎和分支,讓MySQL有希望繼續(xù)發(fā)揚(yáng)光大起來。

本文大致講解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的發(fā)展和現(xiàn)狀,以及MySQL主干以外的分支的狀況,為了我們未來更好的使用MySQL或者其他分支建立一個了解基礎(chǔ)。

MySQL存儲引擎介紹

Falcon存儲引擎

Falcon存儲引擎是MySQL當(dāng)時寄以厚望的存儲引擎,主要是為了面對當(dāng)時Oracle收購了InnoBase公司的情況,用來取代InnoDB的一個存儲引擎。Falcon引擎的主導(dǎo)人員是大師Jim Starkey,從2006年開始開發(fā),到2008年發(fā)布Beta版本,至今為止也沒有走入主流。2008年中旬,F(xiàn)alcon的主架構(gòu)師Jim Starkey宣布從MySQL公司辭職,加入了一家創(chuàng)業(yè)公司NimbusDB擔(dān)任CEO,去設(shè)計和開發(fā)運(yùn)行在云計算上面的關(guān)系/語義數(shù)據(jù)庫,按照2010年目前NoSQL市場的發(fā)展來看,他的選擇是正確的,但是帶來的結(jié)果是Falcon陷入一個沒有主導(dǎo)人員的地步,導(dǎo)致了至今都屬于性能糟糕,半死不活的狀態(tài)。

Falcon引擎是MySQL AB公司基于Netfrastrucure公司的產(chǎn)品開發(fā)的(Netfrastrucure公司被MySQL AB收購),F(xiàn)alcon 當(dāng)初的目標(biāo)是嵌入到MySQL 6.0中用來取代InnoDB引擎,基本很多功能設(shè)計都是按照InnoDB的目標(biāo)去設(shè)計的。

Falcon是面向多CPU、擁有大量內(nèi)存的當(dāng)代硬件環(huán)境和典型Web應(yīng)用的 數(shù)據(jù)庫操作特點(diǎn)而開發(fā)的,主要功能包括多版本并發(fā)控制、完善的ACID支持、支持前綴壓縮的B+樹索引、數(shù)據(jù)頁壓縮(在磁盤上以壓縮形式存儲,在內(nèi)存中以 非壓縮形式存儲)、成組提交等。從功能方面來說沒有什么新鮮事,大體也就實(shí)現(xiàn)了一個事務(wù)型存儲引擎必須要有的功能(很多高級的功能如多表空間、分區(qū)等都還 沒有),但其架構(gòu)上卻有很多獨(dú)特之處。

通過網(wǎng)上的一些測試結(jié)果Falcon的性能還是很糟糕的,寫入速度是 MyISAM 的 1/10 ~ 1/20,Select 的優(yōu)化也有問題,添加了索引感覺還會進(jìn)行全表掃描。所以,我終究感覺 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) 開發(fā)的,這是一款利用MVCC來實(shí)現(xiàn)的事務(wù)型存儲引擎。它既同時支持悲觀和樂觀并發(fā)控制,這一點(diǎn)其他的存儲引擎目前都不支持。solibDB的MySQL 版本包括對外鍵的完全支持。它在許多方面與InnoDB很相似,比如它使用了簇索引。SolidDB還包括一個沒有額外開銷的在線備份功能。

SolidDB公司已經(jīng)由2008年被IBM收購,主要是用于整合為IBM數(shù)據(jù)庫整合方案的一部分,目前是作為一個前端數(shù)據(jù)緩存的這么一個角色存在。IBM收購SolidDB公司,主要是因?yàn)榧坠俏脑?005年6月收購了Solid Information Technology主要競爭對手TimesTen,為了在內(nèi)存數(shù)據(jù)庫這塊市場上有所依托,所以收購了 SolidDB公司。

SolidDB產(chǎn)品是一個完整的打包程序,包括SolidDB存儲引擎、MyISAM存儲引擎以及MySQL服務(wù)器。SolidDB與MySQL之間的結(jié)合出現(xiàn)于2006年的晚些時候。但是底層的技術(shù)以及代碼卻是經(jīng)過了該公司15年的完善。Solid公司保證和支持了整個產(chǎn)品。它是基于GPL協(xié)議的,并且提供了一個類似于MySQL服務(wù)器形式的商業(yè)版本。

性能上來說,SolidDB for MySQL開源數(shù)據(jù)庫再次被證明能夠完全滿足高吞吐量、關(guān)鍵任務(wù)級應(yīng)用對系統(tǒng)性能和可擴(kuò)展性的要求。

但是就 SolidDB被IBM收購,MySQL對Oracle收購的情況來看,基本上 SolidDB for MySQL 是一個沒法繼續(xù)被MySQL使用的引擎,所以也是一個杯具的MySQL引擎。

官方網(wǎng)站:http://www.ibm.com/software/data/SolidDB/

XtraDB存儲引擎

XtraDB存儲引擎是percona公司對于innodb存儲引擎進(jìn)行改進(jìn)加強(qiáng)后的產(chǎn)品,第一個版本發(fā)布于2008年底。XtraDB兼容innodb的所有特性,并且在IO性能,鎖性能,內(nèi)存管理等多個方面進(jìn)行了增強(qiáng)。

Percona是一個MySQL技術(shù)咨詢公司,他們有一個在MySQL領(lǐng)域很有名的技術(shù)博客叫做 Mysql Performance Blog,同時他們編寫了一本很有名的MySQL書叫做《High Performance MySQL》,目前也出版了中文版。他們公司還有一個很有名的MySQL備份工具叫做 XtraBackup。

XtraDB的設(shè)計目標(biāo)也是取代InnoDB作為目標(biāo),它是基于InnoDB來做的開發(fā),XtraDB 100%的兼容 InnoDB,通常可以認(rèn)為 XtraDB 是 InnoDB的升級或者替代版本。在性能上來說,目前 XtraDB 是非常高的,在大部分情況下也是比較穩(wěn)定的,值得你嘗試使用。同樣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/

公司官網(wǎng):http://www.percona.com

性能博客:http://www.mysqlperformanceblog.com

Maria存儲引擎

Maria由MySQL的創(chuàng)始人,MyISAM的作者M(jìn)onty (Michael Widenius) 開發(fā),命名為Maria是因?yàn)樗牡谌齻€小孩就叫Maria。Maria是Monty在MySQL公司的時候就開始開發(fā)的一個MySQL的分支引 擎,Sun收購MySQL后,因?yàn)榕cSun針對MySQL團(tuán)隊(duì)的一些問題不和,然后在2009年初離開了Sun,成立了 Monty Program Ab 公司,專門用于針對 Maria 引擎的開發(fā),同時開發(fā)了一個MySQL的分支,叫做 MariaDB。

Maria是一個MySQL的存儲引擎,利用它來擴(kuò)展MyISAM使之在異常退出時文件不至于損壞。Maria的主要目的是作為更好的 MyISAM,提供崩潰后的故障恢復(fù)功能。更長遠(yuǎn)的目標(biāo)是成為一個全功能的事務(wù)型存儲引擎,支持ACID、回滾、多版本并發(fā)控制、行級鎖、成組提交,同時 也可以選擇不支持事務(wù),最終代替MyISAM成為MySQL的默認(rèn)存儲引擎。

目前Maria引擎有針對MySQL 5.1 的版本,基本上就是一個增加了崩潰恢復(fù)功能的MyISAM,使用表級鎖,但可以做到讀寫不沖突,即在進(jìn)行任何類型的更新操作的同時都可以進(jìn)行讀操作,但多個寫操作不能并發(fā)。

Maria的特點(diǎn):

◆多版本并發(fā)控制,ACID支持

◆通過拷貝日志就能進(jìn)行增強(qiáng)備份

◆高效的磁盤存儲

Maria 引擎開發(fā)之初就是用來取代MyISAM的存儲引擎,并且目前按照我了解有些在使用公司的情況,運(yùn)行情況挺不錯,大家也可以嘗試一下。Maria 在目前有MySQL創(chuàng)始人帶領(lǐng)的情況下,也是一個非常有前途的的存儲引擎,值得期待。

Maria下載:http://askmonty.org/wiki/MariaDB:Download

Maria手冊:http://askmonty.org/wiki/Maria

PrimeBase XT (PBXT) 存儲引擎

PBXT 是 PrimeBase 公司推出的MySQL插件引擎,其功能和 InnoDB 類似,它是一款事務(wù)型存儲引擎,并且它的設(shè)計是很獨(dú)特的。它的一個很與眾不同的特征就是如何來使用事務(wù)日志和數(shù)據(jù)文件來防止“write-ahead”日 志,這可以極大的減少事務(wù)提交的開銷。這個架構(gòu)給了PBXT很大的提高寫并發(fā)的空間,并且測試也表明它在某些特定的操作下比InnoDB要快。PBXT也 使用了MVCC并且支持外鍵約束,但是它不使用簇索引。

主要特性如下:

◆MVCC的 :多版本并發(fā)控制,使讀操作沒有鎖定

◆事務(wù)性 :支持啟動開始,COMMIT和ROLLBACK和恢復(fù)上

◆ACID標(biāo)準(zhǔn) :原子性,一致性,隔離,持久(一次提交的更改不能丟失)

◆行級鎖定 :更新使用行級鎖的并發(fā)允許最大并發(fā)量

◆死鎖檢測 :立即通知如果客戶端進(jìn)程已陷入死鎖

◆參照完整性 :外鍵的支持。

◆寫一次 :PBXT避免的架構(gòu)雙寫入使用日志。

◆BLOB的流 :在結(jié)合的 BLOB Streaming engine.。

按照有人的測試結(jié)果來看,PBXT存儲引擎版本的TPS隨著線程數(shù)的增長,表現(xiàn)比較穩(wěn)定,性能上與innodb差不多,長期來看,它的目標(biāo)也是作為 一個能夠取代InnoDB的存儲引擎。而且目前 MariaDB 這個分支已經(jīng)把 PBXT 作為內(nèi)置的存儲引擎,所以也是可以嘗試使用的一個引擎。

性能測試:http://imysql.cn/2008_07_25_innodb_vs_pbxt

引擎下載:http://www.primebase.org/download/index.php

官方網(wǎng)站:http://www.primebase.org/

MySQL分支介紹

MariaDB 數(shù)據(jù)庫

MariaDB 是一個采用 Maria 存儲引擎的 MySQL 分支版本,是由原來 MySQL 的作者 Michael Widenius (Monty) 創(chuàng)辦的Monty Program Ab公司所開發(fā)的免費(fèi)開源的數(shù)據(jù)庫服務(wù)器。基本上 MariaDB 的歷史跟我上面講的 Maria 存儲引擎歷史一樣。MariaDB的設(shè)計目標(biāo)就是用來取代 MySQL Server。Monty是開源數(shù)據(jù)庫聯(lián)盟(Open Database Alliance)的發(fā)起者,所以 MariaDB 也是開源數(shù)據(jù)庫聯(lián)盟的成員。

MariaDB基于事務(wù)的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB引擎來替換InnoDB,MariaDB的存儲引擎還包括了 PrimeBase XT (PBXT) 和 FederatedX 存儲引擎,MariaDB基于GPL 2.0發(fā)布。

Monty Widenius提供了MySQL的分支MariaDB候選版本。MariaDB 5.1完全兼容MySQL 5.1,這個版本早在2008年11月就發(fā)布了,增加了很多新的功能和若干個新的補(bǔ)丁程序。開發(fā)者稱這個候選版本非常穩(wěn)定。基本上 MySQL,MariaDB 解決了很多問題,例如“pool of threads”功能提供解決多數(shù)據(jù)連接問題。目前 MariaDB 發(fā)布的Release版本是 5.1.44,基本上應(yīng)該是跟 MySQL 5.1 的版本兼容的。

MariaDB 基本上名門之后,加上MySQL創(chuàng)始人Monty的實(shí)力和號召力,是作為MySQL一個非常好的替代品,前途發(fā)展無限,值得我們嘗試使用。

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網(wǎng)站:http://askmonty.org

[ Drizzle 數(shù)據(jù)庫]

Drizzle,是從MySQL衍生出來的一個數(shù)據(jù)庫服務(wù)器,一個精簡版的MySQL分支,Drizzle項(xiàng)目的宗旨是構(gòu)建一個“更精練、更輕量、更快 速”的MySQL版本,它的擴(kuò)展性和易用性與MySQL相當(dāng),但為了提高性能和擴(kuò)展性,它從原來的核心系統(tǒng)里移除了部分功能。 Drizzle 也是開源數(shù)據(jù)庫聯(lián)盟(Open Database Alliance)成員。

MySql的架構(gòu)設(shè)計總監(jiān)Brian Aker在O’Reilly開放源碼大會(OSCON)上對Drizzle做了介紹。Drizzle是一個能為某些特定類別的應(yīng)用提供支持的數(shù)據(jù)庫項(xiàng)目(“what if” project)。Drizzle的設(shè)計目標(biāo):

  1. Web應(yīng)用。
  2. 云計算組件。
  3. 沒有業(yè)務(wù)邏輯的數(shù)據(jù)庫(又名存儲過程)。
  4. 多核架構(gòu)。

Drizzle,一個精簡版的MySQL分支,在目前的MySQL代碼基本之上,將存儲過程、視圖、觸發(fā)器、查詢緩存、PREPARE語句等等沒什 么必要 的功能從代碼中刪掉,簡化對數(shù)據(jù)類型和存儲引擎的支持,并且進(jìn)行大膽的重構(gòu)。最終要實(shí)現(xiàn)的目的是將MySQL的代碼大大簡化,理順MySQL的架構(gòu),改善 MySQL的代碼質(zhì)量,提高系統(tǒng)的穩(wěn)定性和性能。將更適合 Web應(yīng)用、云計算組件、沒有業(yè)務(wù)邏輯的數(shù)據(jù)庫(又名存儲過程)、多核架構(gòu) 等業(yè)務(wù)

Drizzle的特征有:

1. 基于MySQL 6.0的源碼樹

2. 無附加庫

3. 遵守POSIX

4. 微內(nèi)核設(shè)計

5. 可插拔架構(gòu),適用于視圖、存儲過程、UDF、存儲引擎等

6. 跨多個節(jié)點(diǎn)的Sharding技術(shù)

7. 智能代理

8. 多CPU/多核CPU

9. 優(yōu)化的字段類型

10. 高效的內(nèi)存使用

11. 沒有內(nèi)部ACL,使用LDAP/PAM

12. 沒有數(shù)據(jù)庫數(shù)據(jù)格式化

13. 整理有序的Make系統(tǒng)

14. 缺省存儲引擎為InnoDB

15. 移除Windows兼容性

Drizzle 缺省的存儲引擎是InnoDB,支持的數(shù)據(jù)類型更少,基本上設(shè)計目標(biāo)跟 MariaDB 完全不同。MariaDB的設(shè)計目標(biāo)是一個取代MySQL的數(shù)據(jù)庫,而 Drizzle 基本上是一個除了MySQL之外你可以選擇的產(chǎn)品,并且基本上設(shè)計目標(biāo)是針對未來的云計算和分布式Web存儲的方向去的,目前可能不是太穩(wěn)定,不適合在運(yùn) 營環(huán)境使用,但是相當(dāng)?shù)闹档闷诖?/p>

Drizzle使用:http://database.51cto.com/art/200907/137239.htm

Drizzle下載:https://launchpad.net/drizzle

Drizzle網(wǎng)站:http://drizzle.org/

總結(jié)語

基本上來說,目前MySQL還是主流(MyISAM/InnoDB),但是未來發(fā)展不可預(yù)測,并且有這些除了MySQL之外的選擇,也許有一天Oracle把MySQL徹底消滅掉了,但是我們同樣還有 MariaDB、Drizzle可以選擇,這就是開源的力量。

對比幾個MySQL的存儲引擎,Maria 和 XtraDB 是值得大家目前投入逐步使用的行列的,多做一些測試,灰度放亮,獲得一個合理結(jié)果然后再使用是比較合適的。MySQL的數(shù)據(jù)庫分支來說,MariaDB 也是比較值得嘗試使用的,畢竟目前 Drizzle 還不是太成熟穩(wěn)定,并且不一定適合你所做的業(yè)務(wù)。我所了解國內(nèi)部分互聯(lián)網(wǎng)公司也有在使用 MariaDB 的,并且效果不錯,大家也都可以按照自己的情況來使用。

目前NoSQL運(yùn)動如火如荼,有些業(yè)務(wù)更適合采用Key==>Value或這是BigTable類型的數(shù)據(jù)存儲方式,也許MySQL不是最好 的,當(dāng)然選擇最合適存儲,也許未來大部分?jǐn)?shù)據(jù)庫市場會被NoSQL所占領(lǐng),但是我覺得關(guān)系型數(shù)據(jù)庫還是未來幾年很重要的存儲方式。

在MySQL被Sun收購,已經(jīng)Sun被Oracle收購的過程中,整個開源世界都是在翻天覆地的變化,特別是MySQL的命運(yùn)一直都是所有使用和 熱愛開源數(shù)據(jù)庫的人們所關(guān)注的,在這些商業(yè)競爭中,那些開源斗士(比如 Monty),都通過別的方式,繼續(xù)發(fā)揚(yáng)了MySQL這種開源數(shù)據(jù)庫。我們長期來看,總會有一些東西會消失,比如 Falcon存儲引擎,有些東西會繼續(xù)發(fā)展,比如 MariaDB或Drizzle,但是這些都為開源技術(shù)做出了貢獻(xiàn),也為數(shù)據(jù)庫領(lǐng)域增添了色彩。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享