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)。
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;
此查詢同時返回表行數與最後修改時間,便於識別廢棄大表。
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;
應用場景: 通過檢查長時間未更新的表,發現潛在的廢棄數據或歸檔候選對象。
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 查詢在表極多時可能較慢,建議避開高峰期執行UPDATE_TIME 在 5.7+ 版本才可靠,早期版本可能為 NULLINFORMATION_SCHEMA.PARTITIONS 累加