程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 數據庫存儲和分支

MySQL 數據庫存儲和分支

編輯:MySQL綜合教程

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

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

  要了解主要存儲引擎,請參考手冊:http://dev.mysql.com/doc/refman/5.1/zh/index.html

  【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的特點:

  1. 多版本並發控制,ACID支持

  2. 通過拷貝日志就能進行增強備份

  3. 高效的磁盤存儲

  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.。 (http://www.blobstreaming.org/)

  按照有人的測試結果來看,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引擎來替換I

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved