在 MySQL 5.1 及之前的版本,MyISAM 是默认的存储引擎。MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但 MyISAM 不支持事务和行级锁,而且有一个毫无疑问的缺陷是崩溃后无法安全恢复。
MyISAM 回将表存储在两个文件中:数据文件和索引文件,分别以 .MYD 和 .MYI 为扩展名。MyISAM 表可以包含动态或者静态(长度固定)行。
MyISAM 特性
加锁与并发
对表加锁,读取时加共享锁,写入时加排它锁。但是读取时可以往表中插入数据(并发插入,CONCURRENT INSERT)。
修复
执行表修复可能导致一些数据丢失,而且修复操作非常慢。
索引特性
BLOB和TEXT类型字段也可以汲取前500字创建索引。支持全文索引,基于分词创建,支持复杂查询。
延迟更新索引键(Delyed Key Write)
可以指定DELAY_KEY_WRITE。极大的提升性能。
MyISAM 压缩表
如果表在创建并导入数据后,不会在进行修改操作,可以采用 MyISAM 压缩表。
压缩表不能进行修改。可以极大的减少磁盘占用,因此可以减少磁盘I/O,提升查询性能。支持只读索引。
MyISAM 性能
最典型的性能问题还是表锁的问题。