您也可以LOCK TABLES使用 InnoDB 表,因此这不是 MyISAM 特定的。虽然没有必要锁定 InnoDB 表。最好使用事务、MVCC 和SELECT...FOR UPDATE.
有许多配置变量和状态变量仅与 MyISAM 相关,例如key_buffer_size将一些内存用于缓存索引。但这些不是命令。
InnoDB 不支持 MyISAM 表的一些特性。一种是分组自增主键:
CREATE TABLE foo (
group_id INT,
position INT AUTO_INCREMENT,
PRIMARY KEY (group_id, position)
);
上表在position您插入行时递增,但对于 的每个不同值从 1 开始group_id。这仅适用于 MyISAM。
CREATE FULLTEXT INDEX,因此MATCH()...AGAINST()查询谓词目前仅在 MyISAM 中受支持。但是这些是在 MySQL 5.6 中为 InnoDB 实现的。
CREATE SPATIAL INDEX仅在 MyISAM 中受支持。
CHECKSUM TABLE仅适用于 MyISAM 表。
OPTIMIZE TABLE在某些方面特定于 MyISAM,但是当您对 InnoDB 表运行此命令时,它会自动转换为重新创建 + 分析操作。
CREATE TABLE仅 MyISAM 支持的选项:
- AVG_ROW_LENGTH=nnn
- DATA_DIRECTORY=路径
- INDEX_DIRECTORY=路径
- DELAY_KEY_WRITE=1
- PACK_KEYS=1
- ROW_FORMAT=固定
MERGE 存储引擎只能合并 MyISAM 表。
我最喜欢应用于 MyISAM 表的命令如下。:-)
ALTER TABLE tablename ENGINE=InnoDB;