11.2 MySQL 表类型
在本教程中,您将学习各种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表类型
您可以根据各种条件下载以下清单以选择最合适的存储引擎或表类型。请查看以下PDF文件,了解它们之间的区别: http://www.yiibai.com/downloads/mysql/engines-feature.pdf
在本教程中,您已经学习了MySQL中可用的各种存储引擎或表类型。
Last updated