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

MySQL查看表大小與修改時間的兩種高效方法

     編輯:MySQL 資料庫相關知識

快速獲取表級別的儲存佔用、行數、修改時間等元數據,是容量規劃、歸檔清理、效能分析的基礎。本文介紹兩種標準方法。

方法一:SHOW TABLE STATUS(最常用)

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:字符集排序規則

方法二:INFORMATION_SCHEMA.TABLES(靈活查詢、可彙總)

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';

優勢:可跨表彙總、按大小排序、過濾特定引擎、計算總佔用,適合腳本自動化。

進階應用:找出最大的10張表

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;

注意事項

  • InnoDB的TABLE_ROWS與UPDATE_TIME可能不精確,嚴謹場景用SELECT COUNT(*)與觸發器記錄修改時間
  • DATA_FREE大時建議OPTIMIZE TABLE回收碎片
  • 權限需包含PROCESS或對INFORMATION_SCHEMA的SELECT

善用這兩條命令,讓資料庫容量管理從「盲目擴容」轉為「數據驅動決策」。

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