快速獲取表級別的儲存佔用、行數、修改時間等元數據,是容量規劃、歸檔清理、效能分析的基礎。本文介紹兩種標準方法。
SHOW TABLE STATUS LIKE 'table_name';
關鍵返回欄位:
Name:表名Engine:儲存引擎Rows:預估行數(InnoDB為近似值)Data_length:資料大小(bytes)Index_length:索引大小(bytes)Data_free:碎片空間Auto_increment:下一自增值Create_time:建立時間Update_time:最後修改時間(MyISAM準確,InnoDB可能為NULL)Check_time:最後檢查時間Collation:字符集排序規則SELECT
TABLE_NAME,
ENGINE,
TABLE_ROWS,
DATA_LENGTH,
INDEX_LENGTH,
(DATA_LENGTH + INDEX_LENGTH) AS TOTAL_SIZE_BYTES,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS TOTAL_SIZE_MB,
CREATE_TIME,
UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database'
AND TABLE_NAME = 'table_name';
優勢:可跨表彙總、按大小排序、過濾特定引擎、計算總佔用,適合腳本自動化。
SELECT TABLE_NAME,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database'
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC
LIMIT 10;
TABLE_ROWS與UPDATE_TIME可能不精確,嚴謹場景用SELECT COUNT(*)與觸發器記錄修改時間DATA_FREE大時建議OPTIMIZE TABLE回收碎片PROCESS或對INFORMATION_SCHEMA的SELECT善用這兩條命令,讓資料庫容量管理從「盲目擴容」轉為「數據驅動決策」。