mysql> SHOW TABLE STATUS LIKE 'leyangjun'\G
*************************** 1. row ***************************
Name: leyangjun
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 3999999
Avg_row_length: 31
Data_length: 127995956
Max_data_length: 281474976710655
Index_length: 41114624
Data_free: 0
Auto_increment: 4000001
Create_time: 2015-05-30 14:17:37
Update_time: 2015-05-30 14:25:07
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
| 字段 | 含義 | 運維關注點 |
|---|---|---|
| Name | 表名 | 對象識別 |
| Engine | 存儲引擎 | 確認是否為預期引擎(InnoDB/MyISAM) |
| Version | 表定義版本號(每次 ALTER 遞增) | 頻繁 DDL 會導致版本號增長,可能影響性能 |
| Row_format | 行格式 | Dynamic/Fixed/Compressed/Redundant/Compact,影響存儲效率 |
| Rows | 估算行數 | MyISAM 精確,InnoDB 為估值,不可作精確統計依據 |
| Avg_row_length | 平均行長度(字節) | 結合 Rows 估算表大小,排查行溢出 |
| Data_length | 數據文件大小(字節) | 核心容量指標,InnoDB 包含索引頁 |
| Max_data_length | 理論最大容量 | 受行格式、文件系統限制 |
| Index_length | 索引文件大小(字節) | MyISAM 為 .MYI 大小;InnoDB 包含在 Data_length 內 |
| Data_free | 已分配未使用空間(碎片) | MyISAM 碎片指標,大量刪除/更新後增大,需 OPTIMIZE TABLE |
| Auto_increment | 下一個自增值 | 監控自增 ID 耗盡風險 |
| Create_time | 表創建時間 | 對象生命周期管理 |
| Update_time | 數據最後修改時間 | MyISAM 精確,InnoDB 不更新,不可依賴判斷活躍度 |
| Check_time | 最後 CHECK TABLE 時間 | 檢查維護記錄 |
| Collation | 默認校對規則 | 字符集一致性檢查 |
| Checksum | 實時校驗和 | 僅 MyISAM 支持 CHECKSUM=1 時有效 |
| Create_options | 創建時的其他選項 | 如 PARTITIONED、ROW_FORMAT=COMPRESSED 等 |
| Comment | 表備註/額外信息 | InnoDB 顯示表空間 ID、行格式等內部信息 |
Data_free 偏大(超過 Data_length 10%~20%)表明存在碎片。MyISAM 執行 OPTIMIZE TABLE,InnoDB 執行 ALTER TABLE ... ENGINE=InnoDB 或 OPTIMIZE TABLE(5.7+ 支持在線)。
Auto_increment 接近類型上限(INT: 21.4億,BIGINT: 922京)時需提前變更類型或重設計。
業務要求事務卻顯示 Engine: MyISAM,需變更為 InnoDB。
InnoDB 的 Rows、Data_length 為抽樣估算,精確統計需 ANALYZE TABLE 或查詢 INFORMATION_SCHEMA.TABLES。
SHOW TABLE STATUS 是 MySQL 運維的「體檢報告」,核心關注 Engine、Rows(引擎差異)、Data_length、Index_length、Data_free、Auto_increment、Update_time(引擎差異)。結合 INFORMATION_SCHEMA 可構建自動化巡檢體系。