MyISAM 存储引擎从 MySQL 3.23 开始一直是默认存储引擎,直到在 MariaDB 和 MySQL 5.5 中被 InnoDB 取代为默认存储引擎。从历史上看,MyISAM 是旧版 ISAM 引擎的替代品,在 MySQL 4.1 中被删除。

它是一个轻量级、非事务性的引擎,具有出色的性能,易于在系统之间复制并且数据占用空间小。

我们鼓励您在新应用程序中使用 Aria 存储引擎,它在大多数情况下具有更好的性能,并且具有防崩溃的目标。

MyISAM 表存储在磁盘上的三个文件中。一个是扩展名为 .frm 的表定义文件,一个扩展名为 .MYD 的数据文件,一个扩展名为 .MYI 的索引文件。

MyISAM features

不支持 transactions 。

不支持外键。

支持 FULLTEXT indexes 。

支持 GIS 数据类型。

存储限制为 256TB。

每个表最多有 64 个索引。

每个索引最多 32 列。

最大索引长度为 1000 字节。

每个表限制为 (232)2 (1.844E+19) 行。

在底层系统支持的情况下,支持长度最大为 63 位的大文件。

所有数据均以低字节优先的方式存储,因此如果复制到其他系统或其他机器,所有文件仍能正常工作。

数据文件和索引文件可以放在不同的设备上,以提高速度。

支持表锁定,不支持行锁定。

支持 MariaDB 中的 segmented 键缓冲区。

支持 concurrent inserts 。

支持固定长度、动态和压缩格式 - 参见 MyISAM Storage Formats 。

数字索引值以高字节优先的方式存储,从而实现更有效的索引压缩。

数据值以低字节优先的方式存储,这使得它几乎与机器和操作系统无关。唯一的例外是如果机器不使用二进制补码有符号整数和 IEEE 浮点格式。

可以使用常规系统工具在数据库或系统之间复制,只要文件未在任一系统上打开即可。使用 FLUSH_TABLES 确保文件未被使用。

有许多工具可用于处理 MyISAM 表。这些包括:

mariadb-check 用于检查或维修

myisamchk 用于检查或维修

myisampack 用于压缩

可以在一个或多个 MyISAM 表的顶部构建一个 MERGE 表。