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 表。