MySQL查看表引擎show table status命令
时间:2026-11-15 07:15 作者:emer 分类: MySQL
前言
排查锁表、事务支持、崩溃恢复时,要先知道表用的是 InnoDB 还是 MyISAM。SHOW TABLE STATUS 一次性给出引擎、行数、大小、创建时间等信息。本文讲解查看引擎、改引擎、不同引擎特性和注意事项。
操作步骤
1. 查看单表状态(含引擎)
SHOW TABLE STATUS LIKE 'orders'\G
Engine 列即存储引擎。
2. 查看库内所有表引擎
SELECT TABLE_NAME, ENGINE, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='你的库';
3. 修改表引擎
ALTER TABLE orders ENGINE=InnoDB;
4. 查看默认引擎
SHOW VARIABLES LIKE 'default_storage_engine';
5. 常见引擎对比
InnoDB 支持事务、行锁、外键、崩溃恢复;MyISAM 不支持事务、表锁、只读场景快。
6. 校验修改结果
SHOW TABLE STATUS LIKE 'orders';
常见坑
- MyISAM 表出现锁表、不支持事务,迁到 InnoDB。
- ALTER ENGINE 大表锁表耗时,低峰执行。
- TABLE_ROWS 对 InnoDB 是估算值,不是精确行数。
- 改引擎会重建表,占用额外磁盘空间。
- 外键、全文索引等特性依赖引擎,迁移前确认。
- 老系统混用引擎,备份恢复可能不兼容。
- 新表默认 InnoDB,建表时不必显式指定。
总结
SHOW TABLE STATUS 看 Engine,information_schema 批量查引擎。MyISAM 遇事务/锁表问题迁 InnoDB,ALTER ENGINE 大表低峰执行并留足空间。InnoDB 行数是估算,别当精确值。
遇到问题加QQ23979811 协助处理