Understanding MySQL Storage Engines

摘要:在本教程中,您将学习各种MySQL 存储引擎或表类型。了解 MySQL 中每个存储引擎的功能至关重要,这样您才能有效地使用它们来最大限度地提高数据库的性能。

MySQL为其表提供了多种存储引擎,如下所示:

  • MyISAM
  • 数据库
  • 合并
  • 内存(堆)
  • 档案
  • CSV
  • 联邦

每个存储引擎都有自己的优点和缺点。了解每种存储引擎的功能并为您的表选择最合适的一种以最大限度地提高数据库的性能至关重要。在以下部分中,我们将讨论每个存储引擎及其功能,以便您决定使用哪一个。

MyISAM

MyISAM 扩展了以前的 ISAM 存储引擎。 MyISAM 表针对压缩和速度进行了优化。 MyISAM 表还可以在平台和操作系统之间移植。

MyISAM表的大小可达256TB,这是一个巨大的数字。另外,MyISAM表可以压缩为只读表以节省空间。启动时,MySQL 检查 MyISAM 表是否损坏,甚至在出现错误时修复它们。 MyISAM 表不是事务安全的。

在 MySQL 5.5 版本之前,当您创建表而未显式指定存储引擎时,MyISAM 是默认存储引擎。从5.5版本开始,MySQL使用InnoDB作为默认存储引擎。

数据库

InnoDB表完全支持ACID兼容和事务。它们对于性能也是最佳的。 InnoDB表支持外键、提交、回滚、前滚操作。 InnoDB 表的大小最大可达 64TB。

与 MyISAM 一样,InnoDB 表可以在不同平台和操作系统之间移植。如有必要,MySQL 还会在启动时检查和修复 InnoDB 表。

合并

MERGE 表是一种虚拟表,它组合了多个与一个表具有相似结构的 MyISAM 表。 MERGE 存储引擎也称为MRG_MyISAM引擎。 MERGE表没有自己的索引;它使用组件表的索引。

使用 MERGE 表,可以在连接多个表时提高性能。 MySQL 只允许您对MERGE表执行SELECTDELETEUPDATEINSERT操作。如果对MERGE表使用DROP TABLE语句,则仅删除MERGE规范。基础表不会受到影响。

记忆

内存表存储在内存中并使用哈希索引,因此比 MyISAM 表更快。内存表数据的生命周期取决于数据库服务器的正常运行时间。内存存储引擎以前称为 HEAP。

档案

存档存储引擎允许您将大量用于存档目的的记录存储为压缩格式以节省磁盘空间。归档存储引擎在插入记录时对其进行压缩,并在读取记录时使用zlib库对其进行解压缩。

归档表仅允许INSERTSELECT语句。 ARCHIVE表不支持索引,因此需要全表扫描来读取行。

CSV

CSV 存储引擎以逗号分隔值 (CSV) 文件格式存储数据。 CSV 表提供了一种将数据迁移到非 SQL 应用程序(例如电子表格软件)的便捷方法。

CSV 表不支持 NULL 数据类型。另外,读操作需要全表扫描。

联邦

FEDERATED存储引擎允许您管理来自远程 MySQL 服务器的数据,而无需使用集群或复制技术。本地联合表不存储任何数据。当您从本地联合表查询数据时,会自动从远程联合表中提取数据。

选择 MySQL 表类型

您可以下载以下清单,根据各种标准选择最合适的存储引擎或表类型。

MySQL 存储引擎功能总结

在本教程中,您学习了 MySQL 中可用的各种存储引擎或表类型。

本教程有帮助吗?