萬盛學電腦網

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

SQL 查詢 MySQL 數據庫/表大小的標準方法

核心思路

MySQL 將所有元數據存儲在 information_schema 系統庫中,TABLES 表記錄了每個表的物理存儲統計。通過聚合 DATA_LENGTH(數據大小)和 INDEX_LENGTH(索引大小)即可獲得準確大小。

分場景查詢語句

1. 進入系統庫

USE information_schema;

2. 查看所有數據庫總大小

SELECT 
    CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2), ' MB') AS `Total_Size`
FROM TABLES;

3. 查看指定數據庫大小

SELECT 
    CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2), ' MB') AS `DB_Size`
FROM TABLES
WHERE TABLE_SCHEMA = 'home';

4. 查看指定數據庫下某表大小

SELECT 
    CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2), ' MB') AS `Table_Size`
FROM TABLES
WHERE TABLE_SCHEMA = 'home' AND TABLE_NAME = 'members';

5. 進階:按庫分組顯示所有庫大小

SELECT 
    TABLE_SCHEMA AS `Database`,
    CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2), ' MB') AS `Size`,
    COUNT(*) AS `Table_Count`
FROM TABLES
GROUP BY TABLE_SCHEMA
ORDER BY SUM(DATA_LENGTH + INDEX_LENGTH) DESC;

單位換算對照

單位除數示例
Bytes(字節)1原始值
KB/ 1024~1,024 Bytes
MB/ 1048576~1,048,576 Bytes
GB/ 1073741824~1,073,741,824 Bytes

實用技巧

  • 加上 DATA_FREE 可查看碎片空間:DATA_LENGTH + INDEX_LENGTH + DATA_FREE
  • 結合 TABLE_ROWS 估算平均行大小
  • 定期執行 ANALYZE TABLE 更新統計信息,提高查詢準確度
copyright © 萬盛學電腦網 all rights reserved