首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

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:最後檢查時間

方法二: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';

進階:批量查看全庫表大小排序

SELECT 
    TABLE_SCHEMA AS `Database`,
    TABLE_NAME AS `Table`,
    ENGINE,
    TABLE_ROWS,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size_MB`,
    ROUND(DATA_LENGTH / 1024 / 1024, 2) AS `Data_MB`,
    ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS `Index_MB`,
    UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC
LIMIT 20;

注意事項

  • InnoDB UPDATE_TIME 可能為 NULL:5.7+ 可通過 innodb_table_stats 表的 last_update 近似獲取
  • TABLE_ROWS 為估算值:InnoDB 採樣統計,精確行數需 SELECT COUNT(*)
  • Data_free 大表示碎片多:考慮 OPTIMIZE TABLE 或 ALTER TABLE ... ENGINE=InnoDB 整理
  • 分區表:INFORMATION_SCHEMA.PARTITIONS 查看各分區大小
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved