MySQL 表类型/存储引擎

一、MySQL 表类型/存储引擎 介绍

MySQL 表类型/存储引擎是可以有效用于最大化数据库性能的基本功能。它处理用于在数据库中存储和管理信息的创建、读取和更新操作。在本教程中,我们将了解 MySQL 中使用的各种存储引擎或表类型。

以下是 MySQL 中支持的各种表类型/存储引擎:

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

我们可以使用下面的查询来确定我们的 MySQL 服务器支持哪些表类型/存储引擎。

mysql> SHOW ENGINES;  

Support 列值指示是否可以在当前服务器中使用引擎。YES、NO或DEFAULT值表示表类型可用、不可用和可用且当前设置为默认表类型/存储引擎。

了解MySQL中每种表类型的特性至关重要,这使我们能够决定其中最适合我们的表,从而最大限度地提高数据库的性能。MySQL 中的每种表类型都有其优点和缺点。让我们了解每种表类型/存储引擎及其优缺点,以便选择使用哪一种。

二、ISAM 表

ISAM 表被缩写为索引顺序访问方法。此表类型/存储引擎已被弃用并从 MySQL 版本 5.x 中删除。MyISAM 现在替换了该表的功能。ISAM 表的大小为4 GB,这需要昂贵的硬件。它不是便携式的。

三、MyISAM 表

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 允许我们对 MERGE 表仅使用相同(相似结构)的 MyISAM 表。
  • 它不能支持所有 MyISAM 功能,例如我们不能在 MERGE 表上创建 FULLTEXT 索引。
  • 它读取索引较慢。

六、MEMORY表

MEMORY内存表类型/存储引擎创建表,这些表将存储在我们的内存中。在 MySQL 4.1 版之前它也被称为HEAP 。这种表类型比 MyISAM 更快,因为它使用哈希索引来更快地检索结果。我们已经知道存储在内存中的数据可能会由于电源问题或硬件故障而崩溃。因此,我们只能将这张表用作临时工作区或只读缓存,用于从其他表中提取的数据。因此,每当 MySQL 服务器停止或重新启动时,内存/堆表都会丢失。内存/堆表的数据寿命取决于数据库服务器的正常运行时间。

MEMORY表的优势

这种表类型的主要优点是它的速度,非常快。这是因为它使用哈希索引可以更快地检索结果。

MEMORY表的缺点

长期使用MEMORY存储并不是一个好主意,因为一旦断电或硬件崩溃,数据很容易丢失。

七、CSV 表

CSV 表类型/存储引擎将数据以逗号分隔值存储在文件中。它提供了一种方便的方式将数据迁移到许多不同的软件包中,例如电子表格软件。这种表类型不如一般的数据库引擎;但是,它使我们能够最有效、最轻松地交换数据。此外,它会在读取操作期间扫描整个表。

CSV 的优势

当我们需要将复杂数据从一个应用程序导出到 CSV 文件,然后将其导入另一个应用程序时,这种表类型/存储引擎非常有用。

CSV 的缺点

  • 存储大量数据或 BLOB 等较大的数据类型并不好,尽管支持此类类型。
  • 它使数据检索变慢,因为没有索引。

八、FEDERATED 表

FEDERATED 表类型/存储引擎从 5.03 版本开始支持 MySQL,它允许在不使用集群/复制技术的情况下从远程 MySQL 服务器访问数据。位于本地存储中的联合存储引擎不存储任何数据。如果我们要从存储在本地内存中的联邦表中查询数据,MySQL 会自动从远程联邦表中提取数据。需要注意的是,它是服务器而不是客户端访问远程数据库的一种方式。在不使用数据导入导出的情况下,将多台主机的数据合并或将远程数据库的数据复制到本地表中是一种有效的方法。

九、ARCHIVE存档表

这种表类型/存储引擎允许我们以压缩格式存储大量数据以节省磁盘空间并且无法修改。因此,它是存储不再使用的日志数据的完美存储引擎,例如旧发票或销售数据。它在插入过程中压缩数据,并且可以使用Zlib库对其进行解压缩。

ARCHIVE归档表仅支持INSERTSELECT 查询。它不支持大多数数据类型,例如索引数据类型,没有它我们需要扫描全表以读取行。

由于它以压缩格式存储信息,如果我们要读取表,我们首先需要解压缩信息。此过程需要时间来执行复杂的搜索和检索。因此,如果我们必须在这些表中执行大量查询,使用另一个表(例如 MyISAM)是有益的。

十、BDB表

BDB 代表Berkeley DB 引擎,由SleepyCat软件开发。它在事务安全方面类似于 InnoDB。它基于散列存储机制,使得信息的恢复非常迅速。它支持页级锁定,但数据文件不可移植。

热门文章

优秀文章