了解MySQL存储引擎

时间:2019-11-20 08:52:09  来源:igfitidea点击:

简介:在本教程中,您将学习各种MySQL存储引擎或表类型。
必须了解MySQL中每个存储引擎的功能,以便您可以有效地使用它们以最大化数据库的性能。

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

  • MyISAM
  • InnoDB
  • MERGE
  • MEMORY (HEAP)
  • ARCHIVE
  • CSV
  • FEDERATED

每个存储引擎都有其自身的优缺点。
了解每个存储引擎功能并为表选择最合适的功能以最大化数据库性能至关重要。
在以下各节中,我们将讨论每个存储引擎及其功能,以便您可以决定使用哪个。

MyISAM

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

MyISAM表的大小可以高达256TB,这是巨大的。
另外,可以将MyISAM表压缩为只读表以节省空间。
在启动时,MySQL检查MyISAM表是否损坏,甚至在出现错误的情况下对其进行修复。
MyISAM表不是事务安全的。

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

InnoDB

InnoDB表完全支持符合ACID的事务。
它们也是性能的最佳选择。
InnoDB表支持外键,提交,回滚,前滚操作。
InnoDB表的大小最大为64TB。

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

MERGE

MERGE表是一个虚拟表,其中包含多个MyISAM表,这些表具有与一个表相似的结构。
MERGE存储引擎也称为MRG_MyISAM引擎。
MERGE表没有自己的索引。
它改用组件表的索引。

使用MERGE表,可以在连接多个表时加快性能。
MySQL仅允许您对MERGE表执行SELECT,DELETE,UPDATE和INSERT操作。
如果在MERGE表上使用DROP TABLE语句,则仅删除MERGE规范。
基础表将不受影响。

Memory

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

Archive

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

归档表仅允许INSERT和SELECT语句。
ARCHIVE表不支持索引,因此需要进行全表扫描才能读取行。

CSV

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

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

FEDERATED

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

选择MySQL表类型

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

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