MySQL 表存储引擎可创建时指定或 ALTER TABLE 修改,5.5 起默认为 InnoDB;用 SHOW ENGINES 和 SHOW VARIABLES 查看;CREATE TABLE 时用 ENGINE=xxx 声明,不写则用默认;ALTER TABLE ENGINE=xxx 会重建表并加锁;配置文件中设 default-storage-engine 可全局修改默认值。

MySQL 表的存储引擎是在创建表时指定的,也可以在后续通过 ALTER TABLE 修改(需满足引擎兼容性条件)。默认引擎从 MySQL 5.5 起是 InnoDB,但具体行为取决于版本和配置。
查看当前默认引擎和可用引擎
执行以下命令可确认当前 MySQL 实例支持哪些引擎及默认设置:
-
SHOW ENGINES;— 查看所有引擎状态(Support列为DEFAULT表示当前默认) -
SHOW VARIABLES LIKE 'default_storage_engine';或SHOW VARIABLES LIKE 'storage_engine';(旧版本)
创建表时指定引擎
在 CREATE TABLE 语句末尾用 ENGINE=xxx 显式声明,例如:
CREATE TABLE users (id INT, name VARCHAR(20)) ENGINE=InnoDB;CREATE TABLE logs (ts DATETIME, msg TEXT) ENGINE=MyISAM;- 不写
ENGINE时,将使用服务器默认引擎(通常是 InnoDB)
修改已有表的存储引擎
使用 ALTER TABLE …… ENGINE=xxx,例如:
ALTER TABLE users ENGINE=MyISAM;- 该操作会重建表,期间加锁,大表需谨慎;部分引擎(如 MEMORY)不支持含 BLOB/TEXT 列的表
- 若目标引擎不支持某些特性(如外键),MySQL 会报错或静默忽略(如 MyISAM 不支持外键,会丢弃约束定义)
全局或会话级默认引擎配置(my.cnf / my.ini)
可在 MySQL 配置文件 中设置启动时的默认引擎:
- 添加或修改:[mysqld]
default-storage-engine = InnoDB
(MySQL 5.7+ 推荐用default_storage_engine,注意下划线) - 重启 MySQL 生效;修改后新创建的表若未显式指定引擎,即采用此值
- 不建议设为 MyISAM(尤其在需要事务、崩溃恢复或外键的场景)






























