首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SHOW TABLE STATUS 詳解:18 個關鍵指標解讀與實戰應用

     編輯:MySQL 資料庫相關知識

基本語法

SHOW TABLE STATUS;                    -- 所有表
SHOW TABLE STATUS LIKE 'tbl_name';    -- 單表(支援通配符)
SHOW TABLE STATUS LIKE 'prefix_%'\G;  -- 縱向顯示,適合終端閱讀

18 個核心欄位詳細解讀

欄位含義實戰關注點
Name表名-
Engine儲存引擎確認是否為 InnoDB
Version表定義版本-
Row_format行格式Dynamic/Compressed 節省空間
Rows行數(估算值)InnoDB 為估算,精確需 COUNT(*)
Avg_row_length平均行長度(位元組)評估表大小:Rows × Avg_row_length
Data_length資料總大小(位元組)監控表增長趨勢
Max_data_length最大可容納資料量規劃容量上限
Index_length索引大小(位元組)索引膨脹檢測,比例過高需優化
Data_free碎片空間(已分配未使用)大於 100MB 或佔比 > 20% 需 OPTIMIZE TABLE
Auto_increment下一個自增值防止自增 ID 耗盡
Create_time建立時間-
Update_time最後更新時間InnoDB 不更新,MyISAM 有效
Check_time最後檢查時間-
Collation字符集校對規則確認 utf8mb4_general_ci
Checksum校驗和-
Create_options建表額外選項partitioned、row_format 等
Comment備註View 會顯示 VIEW 字樣

實戰應用場景

1. 碎片檢測與整理

SELECT 
  TABLE_NAME,
  Data_free,
  ROUND(Data_free / 1024 / 1024, 2) AS free_mb,
  ROUND(Data_free / (Data_length + Index_length) * 100, 2) AS frag_ratio
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb' AND Data_free > 100*1024*1024
ORDER BY Data_free DESC;

針對碎片率高的表執行:OPTIMIZE TABLE tbl_name; 或 ALTER TABLE tbl_name ENGINE=InnoDB;

2. 自增 ID 耗盡預警

SELECT 
  TABLE_NAME,
  Auto_increment,
  CASE 
    WHEN Auto_increment > 4000000000 THEN 'WARNING: 近 UINT 上限'
    WHEN Auto_increment > 2000000000 THEN 'NOTICE: 近 INT 上限'
    ELSE 'OK'
  END AS status
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb' AND Auto_increment IS NOT NULL;

3. 索引大小佔比分析

SELECT 
  TABLE_NAME,
  ROUND(Index_length / 1024 / 1024, 2) AS idx_mb,
  ROUND(Data_length / 1024 / 1024, 2) AS data_mb,
  ROUND(Index_length / (Data_length + Index_length) * 100, 2) AS idx_ratio
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
ORDER BY idx_ratio DESC;

索引/資料比 > 50% 時需審視是否存在冗餘索引。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved