MySQL查看表引擎show table status命令 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';

常见坑

  1. MyISAM 表出现锁表、不支持事务,迁到 InnoDB。
  2. ALTER ENGINE 大表锁表耗时,低峰执行。
  3. TABLE_ROWS 对 InnoDB 是估算值,不是精确行数。
  4. 改引擎会重建表,占用额外磁盘空间。
  5. 外键、全文索引等特性依赖引擎,迁移前确认。
  6. 老系统混用引擎,备份恢复可能不兼容。
  7. 新表默认 InnoDB,建表时不必显式指定。

总结

SHOW TABLE STATUS 看 Engine,information_schema 批量查引擎。MyISAM 遇事务/锁表问题迁 InnoDB,ALTER ENGINE 大表低峰执行并留足空间。InnoDB 行数是估算,别当精确值。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-11-15 07:15 
'); })();