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 显式声明,例如:
citySHOP是一款集CMS、网店、商品、系统,管理更加科学快速;全新Jquery前端引擎;智能缓存、图表化的数据分析,手机短信营销;各种礼包设置、搭配购买、关联等进一步加强用户体验;任何功能及设置都高度自定义;MVC架构模式,代码严禁、规范;商品推荐、促销、礼包、折扣、换购等多种设置模式;商品五级分类,可自由设置分类属性;商品展示页简介大方,清晰,图片自动放大,无需重开页面;商品评价、咨询分开
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(尤其在需要事务、崩溃恢复或外键的场景)









