MariaDB存儲引擎簡介
點擊關(guān)注,與你共同成長!

MariaDB存儲引擎簡介
存儲引擎簡述
簡單說來,存儲引擎是數(shù)據(jù)庫管理系統(tǒng)用來從數(shù)據(jù)庫創(chuàng)建、讀取、更新數(shù)據(jù)的軟件模塊。
負(fù)責(zé)提供數(shù)據(jù)實體儲存的算法
提供數(shù)據(jù)文件與索引檔案的管理
MariaDB 采用 Plugin 方式動態(tài)加載/卸載 引擎模塊
可透過外部安裝的方式添加新的 Storage Engine
查詢指令:
查看所有的已啟用的存儲引擎:show engines;
查詢預(yù)設(shè)引擎:select @@global.storage_engine;

簡單介紹幾個 MariaDB 的存儲引擎
1、InnoDB/XtraDB
XtraDB 屬于 InnoDB 分支( Percona 負(fù)責(zé)維護),針對“效能與監(jiān)控”進行強化,兼容 InnoDB 引擎。MariaDB 10.1 采用 (MariaDB 10.1),但在 MariaDB 10.2 回歸 MySQL InnoDB 。
支持 Trasaction/Savepoints 以及 XA Transaction。
現(xiàn)代 IoT/BigData: 大量數(shù)據(jù)與快速寫入上出現(xiàn)瓶頸。
2、MyISAM
MySQL/MariaDB 最早的預(yù)設(shè)引擎
輕量化設(shè)計不支持交易(Trasaction)處理
適合 read-heavy workload
無事務(wù)無日志,因此檔案容易因其它因素而損毀
過渡時期的 Big Data 處理方式
3、Aria
原名 Maria,MariaDB 5.1 導(dǎo)入
MariaDB 10.4 后 System Tables 全面改用 Aria
Crash Safe ,采用 log 進行 數(shù)據(jù)還原(data recovery)
采用 page 提供更快速 不易產(chǎn)生 Fragment 的儲存算法
建議改用 Aria 取代 MyISAM
4、TokuDB
由 Tokutek 負(fù)責(zé)開發(fā),MariaDB 5.5 納入此引擎模塊
支持?jǐn)?shù)據(jù)壓縮(data compression)
支持大型數(shù)據(jù)處理,速度快于 InnoDB
適合高效能與寫密集型(write-intensive) 需求的應(yīng)用環(huán)境
5、MyRocks
Facebook 所發(fā)展的數(shù)據(jù)儲存技術(shù)
MyRocks 是將 RocksDB 數(shù)據(jù)庫添加到 MariaDB 的存儲引擎。RocksDB 是一個 LSM 數(shù)據(jù)庫,具有很大的壓縮率,已針對閃存進行了優(yōu)化
提供高效能的壓縮與 I/O 效能
降低數(shù)據(jù)空間需求
6、Connect
MariaDB 10.0 導(dǎo)入,透過 Connect Plugin 讓 MariaDB 連接不同的數(shù)據(jù)來源, 提供外部數(shù)據(jù)(MED: Management External Data)給 MariaDB Client
標(biāo)準(zhǔn)規(guī)范: SQL/MED
提供多種類型的數(shù)據(jù)連接服務(wù)
定義 Wrapper Table 提供 Client 存取
按用途選擇存儲引擎
MariaDB 有幾十種存儲引擎,但并不一定都是最佳。官網(wǎng)有簡單針對各種用于,建議使用不同的引擎。大概如下:
一般用途:
在 MariaDB 10.1 之前,XtraDB 是大多數(shù)情況下的最佳選擇。它是 InnoDB 增強性能的分支,并且是 MariaDB 10.1 之前的默認(rèn)引擎。
InnoDB 是一個很好的常規(guī)事務(wù)存儲引擎。它是 MariaDB 10.2(以及 MySQL)的默認(rèn)存儲引擎。對于早期版本,XtraDB 是 InnoDB 的性能增強分支,通常是首選。
Aria 是 MariaDB 基于 MyISAM 上的更加現(xiàn)代改進,占用空間小,并且讓系統(tǒng)之間相互復(fù)制很簡單。
MyISAM 占用空間小,也可輕松在系統(tǒng)之間進行復(fù)制。MyISAM 是 MySQL 最古老的存儲引擎。但是除了解決遺留問題用途,通常沒有其它理由使用它。Aria 是 MariaDB 的更現(xiàn)代改進。
縮放,分區(qū)(Scaling, Partitioning):
如果想要拆分?jǐn)?shù)據(jù)庫并加載在幾個服務(wù)器上,或者優(yōu)化縮放,建議使用 Galera(一個同步多主集群)。
TokuDB 是一個事務(wù)性存儲引擎,它針對不適合內(nèi)存的工作負(fù)載進行了優(yōu)化,并提供了良好的壓縮比。
Spider 使用分區(qū)(partitioning)通過多個服務(wù)器提供數(shù)據(jù)分片(data sharding)。
ColumnStore 采用大規(guī)模并行分布式數(shù)據(jù)體系結(jié)構(gòu),專為大數(shù)據(jù)擴展而設(shè)計,可處理 PB 級別的數(shù)據(jù)。
MERGE 存儲引擎是一個相同 MyISAM 表的集合,所有表具有相同的列和索引信息。
連接到其它數(shù)據(jù)源
如果要使用的數(shù)據(jù)沒有存放到 MariaDB 數(shù)據(jù)庫,但可以通過以下的數(shù)據(jù)引擎去連接訪問。
CONNECT 允許訪問不同類型的文本文件和遠程資源,就像它們是常規(guī)的 MariaDB 表一樣。
CSV 存儲引擎可以讀取并附加到以 CSV(逗號分隔值)格式存儲的文件。然而,自從 MariaDB 10.0 以來,CONNECT 是一個更好的選擇,并且能夠更靈活地讀寫這樣的文件。
FederatedX 使用 libmysql 與遠程 RDBMS 數(shù)據(jù)源溝通。目前,由于 FederatedX 只使用 libmysql,它只能與另一個 MySQL RDBMS 通信。
CassandraSE 是一個允許訪問舊版本的 Apache Cassandra NoSQL DBMS 的存儲引擎。不過它是相對實驗性的,并且不再被積極開發(fā)。
搜索優(yōu)化
SphinxSE 用作在遠程 Sphinx 數(shù)據(jù)庫服務(wù)器上運行語句的代理(主要用于高級全文搜索)。
Mroonga 使用列存儲提供快速的 CJK 就緒全文搜索。
緩存,只讀
MEMORY 不會在磁盤上寫數(shù)據(jù)(崩潰時所有行都會丟失),并且最適合用于其它表中數(shù)據(jù)的只讀緩存或臨時工作區(qū)。借助默認(rèn)的 XtraDB 和其它具有良好緩存的存儲引擎,與過去相比,對該引擎的需求減少了。
其它專用引擎
S3 存儲引擎是一個只讀存儲引擎,它將數(shù)據(jù)存儲在 amazons3 中。
Sequence 允許使用給定的起始值、結(jié)束值和增量創(chuàng)建數(shù)字(正整數(shù))的升序或降序序列,并在需要時自動創(chuàng)建虛擬的臨時表。
BLACKHOLE 存儲引擎接受數(shù)據(jù),但不存儲數(shù)據(jù),并始終返回空結(jié)果。這在復(fù)制環(huán)境中非常有用,例如,如果您希望在從機上運行復(fù)雜的篩選規(guī)則,而不會在主機上產(chǎn)生任何開銷。
OQGRAPH 允許處理層次結(jié)構(gòu)(樹結(jié)構(gòu))和復(fù)雜圖(在多個方向上有多個連接的節(jié)點)。
總結(jié):
關(guān)于 MariaDB 存儲引擎的一般性常規(guī)選擇(先不考慮拓展和集群),其實大體看來只有以下幾個
一般使用:InnoDB
快速存取,不使用事務(wù):Aria
高壓縮和吞吐,需要降低數(shù)據(jù)空間占比:MyRocks 或 TokuDB 歸檔專用:Archive
連接到其它文本或遠程數(shù)據(jù)源:CONNECT
更多 MariaDB 的存儲引擎詳細,可參看官網(wǎng)
https://mariadb.com/kb/en/storage-engines/
以上,便是今天的分享,希望大家喜歡,覺得內(nèi)容不錯的,歡迎「分享」「贊」或者點擊「在看」支持,謝謝各位。

