萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 查看數據庫大小與表修改時間的 SQL 技巧

1. 查看數據庫總大小(含數據與索引)

SELECT 
    TABLE_SCHEMA AS `Database`,
    ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size_MB`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
GROUP BY TABLE_SCHEMA;

說明: 結果單位為 MB。DATA_LENGTH 為數據大小,INDEX_LENGTH 為索引大小。若需按字節、KB、GB 展示,調整除數即可(1024=KB,1048576=MB,1073741824=GB)。

2. 查看指定數據庫下所有表的大小

SELECT 
    TABLE_NAME AS `Table`,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size_MB`,
    TABLE_ROWS AS `Rows`,
    UPDATE_TIME AS `Last_Updated`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;

此查詢同時返回表行數與最後修改時間,便於識別廢棄大表。

3. 查看表的最後修改時間

SELECT TABLE_NAME, UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
  AND UPDATE_TIME IS NOT NULL
ORDER BY UPDATE_TIME DESC;

應用場景: 通過檢查長時間未更新的表,發現潛在的廢棄數據或歸檔候選對象。

4. 單表大小查詢(指定表名)

SELECT 
    ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size_MB`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name';

注意事項

  • information_schema 查詢在表極多時可能較慢,建議避開高峰期執行
  • InnoDB 表的 UPDATE_TIME 在 5.7+ 版本才可靠,早期版本可能為 NULL
  • 分區表的大小需查詢 INFORMATION_SCHEMA.PARTITIONS 累加
copyright © 萬盛學電腦網 all rights reserved