MySQL 存储引擎
MySQL表类型/存储引擎是必不可少的功能,可以有效地
用于最大化数据库的性能。它处理创建,读取和更新操作,以在数据库中存储和管理信息。在本教程中,我们将了解MySQL中使用的各种存储引擎或表类型。
以下是MySQL中支持的各种表类型/存储引擎:
ISAM
MyISAM
MERGE
InnoDB
MEMORY (HEAP)
ARCHIVE
BDB
CSV
FEDERATED
我们可以使用以下查询来确定我们的MySQL服务器支持哪些表类型/存储引擎。
支持列 strong>值指示在当前服务器中是否可以使用引擎。值为
YES,NO 或
DEFAULT 表示表类型为
可用,不可用和
可用且当前设置为默认表类型/存储引擎。
了解 MySQL ,使我们能够为表确定最合适的表,从而最大程度地提高数据库的性能。 MySQL中的每种表类型都有其自身的优缺点。让我们了解每种表类型/存储引擎以及在其中选择使用哪种表引擎的优缺点。
ISAM表
它缩写为
索引顺序访问方法。该表类型/存储引擎已被弃用,并已从MySQL版本5.x中删除。 MyISAM现在替换了此表的功能。 ISAM表的大小为
4 GB ,这需要昂贵的硬件。它不是可移植的。
MyISAM表
它是ISAM存储引擎的扩展。 MyISAM表类型针对
压缩和速度进行了优化,并且可以在系统之间轻松移植。在5.5版之前,如果我们在表创建期间未指定表类型,则它是默认的存储引擎。从5.x版本开始,InnoDB被用作默认的表类型/存储引擎。
MyISAM表的大小取决于操作系统,最大可达
256 TB 。可以将其压缩为
只读表,以节省内存空间。 MyISAM表类型可以在每个表中存储64个键,并且包含1024个字节的最大键长度。 MyISAM表的运行速度非常快,但是它们不是事务安全的。
MyISAM的优点
如果您是新手,最好从MyISAM开始,因为它易于设计和创建。
在一般情况下,它比其他存储引擎要快。
它提供全文索引/搜索。
MyISAM的缺点
MyISAM表不是事务安全的。
它的数据完整性和崩溃恢复能力很差。
在这种情况下,当我们锁定整个表时,MyISAM比InnoDB慢。
InnoDB表
MySQL中的InnoDB表完全
支持与ACID兼容的事务安全存储引擎。这是第一个支持外键的表类型。 InnoDB表还提供最佳性能。它的大小最大为
64TB 。 InnoDB表也可以在系统之间移植到类似于MyISAM的系统之间。 MySQL也可以在必要时检查和修复InnoDB表。
InnoDB的优点
InnoDB在处理大量数据的同时提供最佳性能。
InnoDB表根据主键将数据安排在磁盘上。
InnoDB的缺点
与MyISAM相比,InnoDB表占用更多的磁盘空间。
MERGE表
MERGE表也称为
MRG_MyISAM 。该表将具有相似结构(相同列的相同列和索引信息)的多个MyISAM表组合到一个表中。该表使用组件表的索引,因为它没有自己的索引。当我们连接多个表时,它也可以用来加快数据库的性能。我们只能对MERGE表执行INSERT,SELECT,DELETE和UPDATE操作。如果我们在此存储引擎中使用
DROP TABLE 查询,则MySQL仅删除了MERGE规范,因此基础表不会受到影响。
MERGE的优点
此表的主要优点是消除MyISAM表的大小限制。
它执行更有效的搜索和维修。
它易于管理日志表集。
MERGE的缺点
MySQL允许我们仅将相同(结构相似)的MyISAM表用于MERGE表。
它不能支持MyISAM的所有功能,例如我们不能在MERGE表上创建FULLTEXT索引。
它读取索引的速度较慢。
内存表
内存表类型/存储引擎
创建表,并将其存储在我们的内存中。在MySQL 4.1版之前,它也称为
HEAP 。此表类型比MyISAM快,因为它使用
哈希索引来更快地检索结果。我们已经知道,由于电源问题或硬件故障,存储在内存中的数据可能会崩溃。因此,我们只能将此表用作从其他表提取的数据的临时工作区或只读缓存。因此,每当MySQL服务器停止或重新启动时,内存/堆表将丢失。内存/堆表的数据寿命取决于数据库服务器的正常运行时间。
内存的优点
此表类型的主要优点是速度,这非常快。这是因为它使用哈希索引可以更快地检索结果。
内存的缺点
长期使用MEMORY存储不是一个好主意术语,因为一旦电源故障或硬件崩溃,数据很容易丢失。
CSV表
CSV表类型/存储引擎将数据存储在逗号中-文件中的分隔值。它提供了一种
便捷的方式来将数据迁移到许多不同的软件包中,例如电子表格软件。该表类型不如一般的数据库引擎好;但是,它使我们能够最有效,最轻松地交换数据。此外,它将在读取操作期间扫描整个表。
CSV的优点
这种表类型/存储引擎在我们需要将复杂数据从一个应用程序导出到CSV文件,然后将其导入到另一个应用程序。
CSV的缺点
存储大量数据或较大的数据类型(例如BLOB)不是很好,尽管支持这种类型。
由于没有索引,这使数据检索变慢。
FEDERATED表
FEDERATED表类型/存储引擎支持版本5.03中的MySQL,该版本允许从远程MySQL服务器访问数据而无需使用群集/复制技术。位于本地存储中的联合存储引擎不存储任何数据。如果我们要从存储在本地内存中的联合表中查询数据,MySQL会自动从远程联合表中提取数据。需要注意的是,这是服务器而非客户端访问远程数据库的一种方式。这是一种有效的方法,可以将多个主机中的数据组合在一起或将远程数据库中的数据复制到本地表中,而无需使用数据导入和导出方法。
ARCHIVE Table
此表类型/存储引擎使我们能够以压缩格式
存储大量数据,以
节省磁盘空间并且无法修改。因此,它是存储不再使用的
日志数据(例如旧发票或销售数据)的理想存储引擎。它在插入过程中压缩数据,并可以使用
Zlib 库将其解压缩。
归档表仅支持 INSERT 和 SELECT查询。它不支持大多数数据类型,例如索引数据类型,否则,我们需要扫描整个表以读取行。
因为它以压缩格式存储信息,并且如果要阅读表,我们首先需要解压缩信息。此过程将花费一些时间来执行复杂的搜索和检索。因此,如果我们必须在这些表中执行大量查询,则使用另一个表(例如MyISAM)是有益的。
BDB表
BDB立场由
SleepyCat 软件开发的
Berkeley DB引擎。它在事务安全方面类似于InnoDB。它基于散列存储机制,可以非常快速地恢复信息。它支持
页面级锁定,但数据文件不可移植。