选择正确的存储引擎

You are viewing an old version of this article. View the current version here.

存储引擎选择的主要原因的高级概述:

主题列表

通用

  • InnoDB 是一个良好的通用事务存储引擎,并且从MariaDB 10.2开始,在大多数情况下是最佳选择。它是MariaDB 10.2的默认存储引擎。对于早期版本,XtraDB是InnoDB的性能增强分支,通常更受欢迎。
  • Aria是MariaDB对MyISAM的现代改进,占用空间小,允许在系统之间轻松复制。
  • MyISAM占用空间小,允许在系统之间轻松复制。 MyISAM是MySQL最古老的存储引擎。除了遗留目的外,通常没有什么理由使用它。Aria是MariaDB的现代改进。
  • XtraDB在大多数情况下是MariaDB 10.1及更早版本中的最佳选择。它是InnoDB的性能增强分支,并且是MariaDB的默认引擎,直到MariaDB 10.1

扩展,分区

当您希望将数据库负载分散在多个服务器上或优化扩展时。我们还建议查看Galera,这是一个同步的多主集群。

  • Spider使用分区通过多个服务器提供数据分片。
  • ColumnStore利用大规模并行分布式数据架构,专为处理PB级数据而设计。
  • MERGE存储引擎是一组相同的MyISAM表格,可以用作一个表格。 “相同”意味着所有表格具有相同的列和索引信息。
  • TokuDB是一种事务性存储引擎,针对不适合内存的工作负载进行了优化,并提供了良好的压缩比。 TokuDB已被其上游开发人员弃用,并在MariaDB 10.5中禁用,在MariaDB 10.6中删除

压缩/归档

  • MyRocks比InnoDB具有更大的压缩能力,并且写入放大较少,使闪存存储耐久性更好,并提高了总体吞吐量。
  • Archive存储引擎最好用于归档。
  • TokuDB是一种事务性存储引擎,针对不适合内存的工作负载进行了优化,并提供了良好的压缩比。 TokuDB已被其上游开发人员弃用,并在MariaDB 10.5中禁用,在MariaDB 10.6中删除

连接到其他数据源

当您想要使用未存储在MariaDB数据库中的数据时。

  • CONNECT允许访问不同类型的文本文件和远程资源,就像它们是常规MariaDB表格一样。
  • CSV存储引擎可以读取和追加以CSV(逗号分隔值)格式存储的文件。但是,自MariaDB 10.0以来,CONNECT是更好的选择,并且能够更灵活地读取和写入此类文件。
  • FederatedX使用libmysql与数据源交互,数据源是远程RDBMS。目前,由于FederatedX仅使用libmysql,因此它只能与另一个MySQL RDBMS交互。
  • CassandraSE是一种存储引擎,允许访问较旧版本的Apache Cassandra NoSQL DBMS。它相对实验性,不再得到积极开发,并已在MariaDB 10.6中删除。

优化搜索

针对搜索进行优化的搜索引擎。

  • SphinxSE用作代理,在远程Sphinx数据库服务器上运行语句(主要用于高级全文搜索)。
  • Mroonga提供快速的CJK-ready全文搜索,使用列存储。

缓存,只读

  • MEMORY 不会将数据写入磁盘(所有行在崩溃时都会丢失),最适合用于从其他表中的只读缓存数据,或用于临时工作区。由于默认的InnoDB和其他存储引擎具有良好的缓存,因此与过去相比,对此引擎的需求较少。

其他专业存储引擎

  • S3 Storage Engine 是一个只读存储引擎,将其数据存储在Amazon S3中。
  • Sequence 允许创建具有给定起始值、结束值和增量的升序或降序数字序列(正整数),在需要时自动创建虚拟、短暂的表。
  • BLACKHOLE 存储引擎接受数据但不存储它,并始终返回空结果。例如,在复制环境中,如果您想在从库上运行复杂的过滤规则而不会在主库上产生任何开销,则此方法可能很有用。
  • OQGRAPH 允许您处理层次结构(树形结构)和复杂图形(节点在多个方向上具有许多连接)。

按字母顺序排列的列表

  • Archive 存储引擎最适合用于存档。
  • Aria 是MariaDB对MyISAM的现代改进,占用空间小,允许在系统之间轻松复制。
  • BLACKHOLE 存储引擎接受数据但不存储数据,并始终返回空结果。例如,在复制环境中,如果您想在从库上运行复杂的过滤规则而不会给主库带来任何开销,则这可能很有用。
  • CassandraSE 是一种存储引擎,允许访问旧版本的Apache Cassandra NoSQL DBMS。它相对较为实验性,不再得到积极开发,并已在MariaDB 10.6中删除。
  • ColumnStore 利用大规模并行分布式数据架构,设计用于大数据扩展以处理PB级数据。
  • CONNECT 允许访问不同类型的文本文件和远程资源,就像它们是常规的MariaDB表一样。
  • CSV 存储引擎可以读取和附加存储在CSV(逗号分隔值)格式中的文件。然而,自MariaDB 10.0以来,CONNECT是更好的选择,并且能够更灵活地读写此类文件。
  • FederatedX 使用libmysql与数据源通信,数据源是远程RDBMS。目前,由于FederatedX仅使用libmysql,因此它只能与另一个MySQL RDBMS通信。
  • InnoDB 是一个很好的通用事务存储引擎,从MariaDB 10.2开始,在大多数情况下是最佳选择。它是MariaDB 10.2的默认存储引擎。对于早期版本,XtraDB是InnoDB的性能增强分支,通常更受欢迎。
  • MERGE 存储引擎是一组相同的MyISAM表,可以作为一个表使用。 “相同”意味着所有表具有相同的列和索引信息。
  • MEMORY 不会将数据写入磁盘(所有行在崩溃时都会丢失),最适合用于从其他表中的只读缓存数据,或用于临时工作区。由于默认的InnoDB和其他存储引擎具有良好的缓存,因此与过去相比,对此引擎的需求较少。
  • Mroonga 提供快速的CJK-ready全文搜索,使用列存储。
  • MyISAM 占用空间小,允许在系统之间轻松复制。MyISAM是MySQL最古老的存储引擎。除了遗留目的外,通常没有使用它的理由。Aria是MariaDB的现代改进。
  • MyRocks 可以实现比InnoDB更高的压缩率,并且具有更少的写放大,从而提供了更好的闪存存储耐久性和整体吞吐量。
  • OQGRAPH 允许您处理层次结构(树形结构)和复杂图形(节点在多个方向上具有许多连接)。
  • S3 Storage Engine 是一个只读存储引擎,将其数据存储在Amazon S3中。
  • Sequence 允许创建具有给定起始值、结束值和增量的升序或降序数字序列(正整数),在需要时自动创建虚拟、短暂的表。
  • SphinxSE 用作代理,在远程Sphinx数据库服务器上运行语句(主要用于高级全文搜索)。
  • Spider 使用分区提供数据分片到多个服务器。
  • TokuDB 是一种事务性存储引擎,针对不适合内存的工作负载进行了优化,并提供了良好的压缩比。TokuDB已被其上游开发人员弃用,在MariaDB 10.5中被禁用,在MariaDB 10.6中被删除。
  • XtraDBMariaDB 10.1及更早版本中,在大多数情况下是最佳选择。它是InnoDB的性能增强分支,并且是MariaDB默认引擎,直到MariaDB 10.1为止。

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.