MariaDB存储引擎简介
共 3077字,需浏览 7分钟
·
2021-05-22 06:43
点击关注,与你共同成长!
MariaDB存储引擎简介
存储引擎简述
简单说来,存储引擎是数据库管理系统用来从数据库创建、读取、更新数据的软件模块。
负责提供数据实体储存的算法
提供数据文件与索引档案的管理
MariaDB 采用 Plugin 方式动态加载/卸载 引擎模块
可透过外部安装的方式添加新的 Storage Engine
查询指令:
查看所有的已启用的存储引擎:show engines;
查询预设引擎:select @@global.storage_engine;
简单介绍几个 MariaDB 的存储引擎
1、InnoDB/XtraDB
XtraDB 属于 InnoDB 分支( Percona 负责维护),针对“效能与监控”进行强化,兼容 InnoDB 引擎。MariaDB 10.1 采用 (MariaDB 10.1),但在 MariaDB 10.2 回归 MySQL InnoDB 。
支持 Trasaction/Savepoints 以及 XA Transaction。
现代 IoT/BigData: 大量数据与快速写入上出现瓶颈。
2、MyISAM
MySQL/MariaDB 最早的预设引擎
轻量化设计不支持交易(Trasaction)处理
适合 read-heavy workload
无事务无日志,因此档案容易因其它因素而损毁
过渡时期的 Big Data 处理方式
3、Aria
原名 Maria,MariaDB 5.1 导入
MariaDB 10.4 后 System Tables 全面改用 Aria
Crash Safe ,采用 log 进行 数据还原(data recovery)
采用 page 提供更快速 不易产生 Fragment 的储存算法
建议改用 Aria 取代 MyISAM
4、TokuDB
由 Tokutek 负责开发,MariaDB 5.5 纳入此引擎模块
支持数据压缩(data compression)
支持大型数据处理,速度快于 InnoDB
适合高效能与写密集型(write-intensive) 需求的应用环境
5、MyRocks
Facebook 所发展的数据储存技术
MyRocks 是将 RocksDB 数据库添加到 MariaDB 的存储引擎。RocksDB 是一个 LSM 数据库,具有很大的压缩率,已针对闪存进行了优化
提供高效能的压缩与 I/O 效能
降低数据空间需求
6、Connect
MariaDB 10.0 导入,透过 Connect Plugin 让 MariaDB 连接不同的数据来源, 提供外部数据(MED: Management External Data)给 MariaDB Client
标准规范: SQL/MED
提供多种类型的数据连接服务
定义 Wrapper Table 提供 Client 存取
按用途选择存储引擎
MariaDB 有几十种存储引擎,但并不一定都是最佳。官网有简单针对各种用于,建议使用不同的引擎。大概如下:
一般用途:
在 MariaDB 10.1 之前,XtraDB 是大多数情况下的最佳选择。它是 InnoDB 增强性能的分支,并且是 MariaDB 10.1 之前的默认引擎。
InnoDB 是一个很好的常规事务存储引擎。它是 MariaDB 10.2(以及 MySQL)的默认存储引擎。对于早期版本,XtraDB 是 InnoDB 的性能增强分支,通常是首选。
Aria 是 MariaDB 基于 MyISAM 上的更加现代改进,占用空间小,并且让系统之间相互复制很简单。
MyISAM 占用空间小,也可轻松在系统之间进行复制。MyISAM 是 MySQL 最古老的存储引擎。但是除了解决遗留问题用途,通常没有其它理由使用它。Aria 是 MariaDB 的更现代改进。
缩放,分区(Scaling, Partitioning):
如果想要拆分数据库并加载在几个服务器上,或者优化缩放,建议使用 Galera(一个同步多主集群)。
TokuDB 是一个事务性存储引擎,它针对不适合内存的工作负载进行了优化,并提供了良好的压缩比。
Spider 使用分区(partitioning)通过多个服务器提供数据分片(data sharding)。
ColumnStore 采用大规模并行分布式数据体系结构,专为大数据扩展而设计,可处理 PB 级别的数据。
MERGE 存储引擎是一个相同 MyISAM 表的集合,所有表具有相同的列和索引信息。
连接到其它数据源
如果要使用的数据没有存放到 MariaDB 数据库,但可以通过以下的数据引擎去连接访问。
CONNECT 允许访问不同类型的文本文件和远程资源,就像它们是常规的 MariaDB 表一样。
CSV 存储引擎可以读取并附加到以 CSV(逗号分隔值)格式存储的文件。然而,自从 MariaDB 10.0 以来,CONNECT 是一个更好的选择,并且能够更灵活地读写这样的文件。
FederatedX 使用 libmysql 与远程 RDBMS 数据源沟通。目前,由于 FederatedX 只使用 libmysql,它只能与另一个 MySQL RDBMS 通信。
CassandraSE 是一个允许访问旧版本的 Apache Cassandra NoSQL DBMS 的存储引擎。不过它是相对实验性的,并且不再被积极开发。
搜索优化
SphinxSE 用作在远程 Sphinx 数据库服务器上运行语句的代理(主要用于高级全文搜索)。
Mroonga 使用列存储提供快速的 CJK 就绪全文搜索。
缓存,只读
MEMORY 不会在磁盘上写数据(崩溃时所有行都会丢失),并且最适合用于其它表中数据的只读缓存或临时工作区。借助默认的 XtraDB 和其它具有良好缓存的存储引擎,与过去相比,对该引擎的需求减少了。
其它专用引擎
S3 存储引擎是一个只读存储引擎,它将数据存储在 amazons3 中。
Sequence 允许使用给定的起始值、结束值和增量创建数字(正整数)的升序或降序序列,并在需要时自动创建虚拟的临时表。
BLACKHOLE 存储引擎接受数据,但不存储数据,并始终返回空结果。这在复制环境中非常有用,例如,如果您希望在从机上运行复杂的筛选规则,而不会在主机上产生任何开销。
OQGRAPH 允许处理层次结构(树结构)和复杂图(在多个方向上有多个连接的节点)。
总结:
关于 MariaDB 存储引擎的一般性常规选择(先不考虑拓展和集群),其实大体看来只有以下几个
一般使用:InnoDB
快速存取,不使用事务:Aria
高压缩和吞吐,需要降低数据空间占比:MyRocks 或 TokuDB 归档专用:Archive
连接到其它文本或远程数据源:CONNECT
更多 MariaDB 的存储引擎详细,可参看官网
https://mariadb.com/kb/en/storage-engines/
以上,便是今天的分享,希望大家喜欢,觉得内容不错的,欢迎「分享」「赞」或者点击「在看」支持,谢谢各位。