下文介绍有关MySQL存储引擎的相关内容,主要对官网的内容进行了翻译。

  • InnoDB:MySQL 5.7 中的默认存储引擎。是用于 MySQL 的事务安全(符合 ACID)存储引擎,具有提交、回滚和崩溃恢复功能以保护用户数据。行级锁定(不升级到更粗粒度的锁定)和 Oracle 风格的一致非锁定读取提高了多用户并发性和性能。将用户数据存储在聚集索引中,以减少基于主键的常见查询的 I/O。为了维护数据完整性,还支持引用完整性约束。
  • MyISAM:这些表占用空间很小。表级锁定限制了读/写工作负载的性能,因此它通常用于 Web 和数据仓库配置中的只读或以读取为主的工作负载。
  • Memory:将所有数据存储在 RAM 中,以便在需要快速查找非关键数据的环境中快速访问。该发动机以前称为发动机。它的用例正在减少;它的缓冲池内存区域提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,并为庞大的分布式数据集提供快速的键值查找。
  • CSV:它的表格实际上是具有逗号分隔值的文本文件。 CSV 表允许您以 CSV 格式导入或转储数据,以便与读取和写入相同格式的脚本和应用程序交换数据。由于 CSV 表没有索引,因此您通常在正常操作期间将数据保存在表中,并且仅在导入或导出阶段使用 CSV 表。
  • Archive:这些紧凑的未索引表旨在存储和检索大量很少引用的历史、存档或安全审计信息。
  • Blackhole:Blackhole 存储引擎接受但不存储数据,类似于 Unix 设备。查询总是返回一个空集。这些表可用于复制配置,其中 DML 语句被发送到副本服务器,但源服务器不保留自己的数据副本。
  • NDB(也称为 NDBCLUSTER):此集群数据库引擎特别适用于需要尽可能高的正常运行时间和可用性的应用程序。
  • Merge:使 MySQL DBA 或开发人员能够对一系列相同的表进行逻辑分组,并将它们作为一个对象引用。适用于 VLDB 环境,例如数据仓库。
  • Federated:提供链接单独的 MySQL 服务器以从许多物理服务器创建一个逻辑数据库的能力。非常适合分布式或数据集市环境。
    示例:该引擎作为 MySQL 源代码中的示例,说明了如何开始编写新的存储引擎。它主要是开发人员感兴趣的。存储引擎是一个什么都不做的“存根”。您可以使用此引擎创建表,但无法在其中存储或检索任何数据。
    您不限于对整个服务器或架构使用相同的存储引擎。您可以为任何表指定存储引擎。例如,应用程序可能主要使用表,其中一个表用于将数据导出到电子表格,而一些表用于临时工作区。

更多内容详见:https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html