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