MySQL內建的其他存儲引擎
Archive 引擎:
Archive存儲引擎只支持INSERT和SELECT操作,在MySQL5.1之前也不支持索引。Archive引擎會緩存所有的寫并利用zlib對插入的行進行壓縮,所以比MyISAM表的磁盤I/O更少。但是每次SELECT查詢都需要執行全表掃描。所以Archive表適合日志和數據采集類應用,這類應用做數據分析時往往需要全表掃描。或者在一些需要更快速的INSERT操作的場合下也可以使用。
Archive引擎支持行級鎖和專用的緩沖區,所以可以實現高并發的插入。在一個查詢開始知道返回表中存在的所有行數之前,Archive 引擎會阻止其他的SELECT執行,以實現一致性讀。另外,也實現了批量插入在完成之前對讀操作是不可見的。這種機制模仿了事務和MVCC的一些特性。但 Archive引擎不是一個事務型的引擎,而是一個針對高速插入和壓縮做了優化的簡單引擎。
Blcakhole 引擎:
Bleckhole引擎沒有實現任何的存儲機制,他會丟棄所有插入的數據,不作任何保存。但是服務器會記錄Blackhole表的日志,所以可以用戶復制數據到備庫,或者只是簡單地記錄到日志。這種特殊的存儲引擎可以在一些特殊的復制架構和日志審核時發揮作用。但這種應用方式我們碰到過很多問題,因此不推薦。
CSV 引擎:
CSV引擎可以將普通的CSV文件(逗號分隔值得文件)作為MySQL的表來處理,但這種表不支持索引。CSV引擎可以再數據庫運行時拷入或者拷出文件。可以將Excel等電子表格軟件中的數據存儲為CSV文件,然后復制到MySQL數據目錄下,就嫩在MySQL中打開使用。同樣,如果將數據寫入到一個CSV引擎表,其他的外部程序也能立刻從表的數據文件中讀取CSV格式的數據。因此CSV引擎可以作為一種數據交換的機制,非常有用。
Federated 引擎:
Federated引擎是訪問其他MySQL服務器的一種代理,他會創建一個到遠程MySQL服務器的客戶端連接,并將查詢傳輸到遠程服務器執行,然后提取或者發送需要的數據。最初設計該存儲引擎是為了和企業級數據庫如:Microsoft SQL Server 和 Oracle 的類似特性競爭的,可以說更多的是一種市場行為。盡管該引擎看起來提供了一種很好的跨域服務器的靈活性,但也經常帶來問題,因此默認是禁用的。 MariaDB使用了他的一個后續改進版本,叫做FederatedX。
Memory 引擎:
入股需要快速地訪問數據,并且這些數據不會被修改,重啟以后丟失也沒有關系,那么使用Memory表(以前也叫做HEAP表)是非常有用的。Memory表至少比MyISAM表要快一個數量級,因為所有的數據都保存在內存中,不需要進行磁盤I/O。Memory表結構在重啟以后還會保留,但數據會丟失。
Memroy表在很多場景可以發揮好的作用:
1、用于查找(lookup)或者映射(mapping)表,例如將郵編和州名映射的表。
2、用于緩存周期性聚合數據(periodically aggregated data)的結果。
3、用于保存數據分析中產生的中間數據。
Memroy表支持Hash引擎,因此查找操作非常快。雖然Memory表的速度非常快,但還是無法取代傳統的基于此盤的表。Memroy表是表級鎖,因此并發寫入的性能較低。它不支持BLOB或TEXT類型的列,并且每行的長度是固定的,所以即使制定了VARCHAR列,實際存儲是也會轉成CHAR,這可能導致部分內存的浪費(其中一些限制在Percona版本已經解決)。
Merge 引擎:
Merge引擎是MyISAM引擎的一個變種。Merge表是由多個MyISAM表合并而來的虛擬表。如果將MySQL用于日志或者數據倉庫類的應用,該引擎可以發揮作用。但是引入分區功能后,該引擎已經被放棄。
NDB 引擎:
2003年,當時的MySQL AB公司從索尼愛立信公司收購了NDB數據庫,然后開發了NDB集群存儲引擎,作為SQL和NDB原生協議之間的接口。MySQL服務器、NDB集群存儲引擎,以分布式的、share-nothing的、容災的、高可用的NDB數據庫的組合,被稱為MySQL集群(MySQL Cluster)。