MariaDB存储引擎简介

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MariaDB存储引擎简介

1697ca49580472f5764d955d7a065faa.jpg

MariaDB存储引擎简介

存储引擎简述

  • 简单说来,存储引擎是数据库管理系统用来从数据库创建、读取、更新数据的软件模块。
  • 负责提供数据实体储存的算法
  • 提供数据文件与索引档案的管理
  • MariaDB 采用 Plugin 方式动态加载/卸载 引擎模块
  • 可透过外部安装的方式添加新的 Storage Engine

查询指令:

查看所有的已启用的存储引擎:show engines;

查询预设引擎:select @@global.storage_engine;36a5ab4fefba61be9867ac6d61a25717.png

查看所有的已启用的存储引擎


简单介绍几个 MariaDB 的存储引擎

11、InnoDB/XtraDB、InnoDB/XtraDB

  • XtraDB 属于 InnoDB 分支( Percona 负责维护),针对“效能与监控”进行强化,兼容 InnoDB 引擎。MariaDB 10.1 采用 (MariaDB 10.1),但在 MariaDB 10.2 回归 MySQL InnoDB 。
  • 支持 Trasaction/Savepoints 以及 XA Transaction。
  • 现代 IoT/BigData: 大量数据与快速写入上出现瓶颈。


22、MyISAMMyISAM

  • MySQL/MariaDB 最早的预设引擎
  • 轻量化设计不支持交易(Trasaction)处理
  • 适合 read-heavy workload
  • 无事务无日志,因此档案容易因其它因素而损毁
  • 过渡时期的 Big Data 处理方式


33、Aria、Aria

  • 原名 Maria,MariaDB 5.1 导入
  • MariaDB 10.4 后 System Tables 全面改用 Aria
  • Crash Safe ,采用 log 进行 数据还原(data recovery)
  • 采用 page 提供更快速 不易产生 Fragment 的储存算法
  • 建议改用 Aria 取代 MyISAM


44、TokuDB、TokuDB

  • 由 Tokutek 负责开发,MariaDB 5.5 纳入此引擎模块
  • 支持数据压缩(data compression)
  • 支持大型数据处理,速度快于 InnoDB
  • 适合高效能与写密集型(write-intensive) 需求的应用环境


55、MyRocks、MyRocks

  • Facebook 所发展的数据储存技术
  • MyRocks 是将 RocksDB 数据库添加到 MariaDB 的存储引擎。RocksDB 是一个 LSM 数据库,具有很大的压缩率,已针对闪存进行了优化
  • 提供高效能的压缩与 I/O 效能
  • 降低数据空间需求


66、Connect、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/

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 网络协议 关系型数据库
MariaDB 简介
MariaDB Community Server 是一个开源的关系数据库服务器,深受全世界开发者的喜爱。由 MySQL 的原始开发者创建,MariaDB 与 MySQL 兼容,并保证永远保持开源。为一些世界上最受欢迎的网站提供动力,比如维基百科和 WordPress.com。它也是全球很多银行、社交媒体、移动和电子商务网站背后的核心引擎。
379 0
MariaDB 简介
|
关系型数据库 MySQL 数据库
1. MariaDB简介
作者: 铁锚 日期: 2013年9月21日 官方博客地址:https://mariadb.org/ 官网地址: https://mariadb.com/ 百度百科地址: http://baike.baidu.com/view/2521908.htm MariaDB 是在完全向后兼容MySQL的基础上的一个增强型关系数据库管理软件。
1116 0
|
6月前
|
NoSQL 关系型数据库 MySQL
阿里云RDS关系型数据库大全_MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB
254 0
|
6月前
|
NoSQL 关系型数据库 MySQL
阿里云关系型数据库详细介绍MySQL/MariaDB/SQL Server/PolarDB/PostgreSQL等
阿里云关系型数据库详细介绍MySQL/MariaDB/SQL Server/PolarDB/PostgreSQL等,阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
114 0
|
6月前
|
NoSQL Cloud Native 关系型数据库
阿里云RDS数据库_MySQL_SQL Server_MariaDB_PolarDB_PostgreSQL
阿里云RDS关系型数据库大全:MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
110 0
|
存储 自然语言处理 关系型数据库
mysql/mariadb 实现全文检索
mysql/mariadb 实现全文检索
mysql/mariadb 实现全文检索
|
8月前
|
关系型数据库 MySQL API
MariaDB数据库中如何允许远程链接mysql并开放3306端口
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
547 0
|
8月前
|
存储 关系型数据库 MySQL
mysql--Centos安装MariaDB(mysql)
mysql--Centos安装MariaDB(mysql)
1327 0
|
8月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu安装MariaDB-10.3数据库(等同于Mysql-5.7)
Ubuntu安装MariaDB-10.3数据库(等同于Mysql-5.7)
192 0
|
10月前
|
SQL Oracle 前端开发
使用MariaDB线程池提高MySQL的扩展性
MySQL的线程池能够有效地解决大量短连接的性能问题,大幅提高MySQL数据库的扩展性。但官方MySQL的线程池在收费的企业版中才有,免费的社区版中没有这个功能,这里介绍MairaDB的线程池。
152 0