您也可以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;