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(尤其在需要事务、崩溃恢复或外键的场景)
