查詢MySQL資料庫,MySQL表的大小

Gnix部落格發表於2020-11-03

查詢資料庫,表大小

  • 檢視資料庫列表
  • 查詢所有資料庫的總大小
  • 統計所有庫資料量
  • 統計每個庫大小
  • 檢視指定資料庫的大小
  • 檢視所有資料庫各個容量大小
  • 檢視所有資料庫各個表容量大小
  • 檢視指定資料庫容量大小
  • 檢視指定資料庫各個表容量大小
-- 檢視資料庫列表,並選擇進入information_schema
SHOW DATABASES;
USE information_schema;

-- 查詢所有資料庫的總大小
SELECT concat(round(SUM(DATA_LENGTH / 1024 / 1024), 2), 'MB') AS DATA
FROM TABLES;

-- 統計所有庫資料量,注:每張表資料量=AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH
SELECT concat(ROUND(SUM((AVG_ROW_LENGTH * TABLE_ROWS + INDEX_LENGTH) / 1024 / 1024), 2), 'MB') AS 'Total(MB)'
FROM information_schema.TABLES;

-- 統計每個庫大小
SELECT table_schema
	, round(SUM((AVG_ROW_LENGTH * TABLE_ROWS + INDEX_LENGTH) / 1024 / 1024), 2) AS 'Total(MB)'
FROM information_schema.TABLES
GROUP BY table_schema;

-- 檢視指定資料庫的大小,例如資料庫mysql,方法如下:
SELECT concat(round(SUM(DATA_LENGTH / 1024 / 1024), 2), 'MB') AS DATA
FROM TABLES
WHERE table_schema = 'mysql';

-- 檢視所有資料庫各個容量大小
SELECT table_schema AS '資料庫名', SUM(table_rows) AS '資料行數'
	, SUM(TRUNCATE(data_length / 1024 / 1024, 2)) AS '資料容量(MB)'
	, SUM(TRUNCATE(index_length / 1024 / 1024, 2)) AS '索引容量(MB)'
FROM information_schema.TABLES
GROUP BY table_schema
ORDER BY SUM(data_length) DESC, SUM(index_length) DESC;

-- 檢視所有資料庫各個表容量大小
SELECT table_schema AS '資料庫', table_name AS '表名', table_rows AS '記錄數'
	, TRUNCATE(data_length / 1024 / 1024, 2) AS '資料容量(MB)'
	, TRUNCATE(index_length / 1024 / 1024, 2) AS '索引容量(MB)'
FROM information_schema.TABLES
ORDER BY data_length DESC, index_length DESC;

-- 檢視指定資料庫容量大小,例:檢視mysql庫容量大小
SELECT table_schema AS '資料庫', SUM(table_rows) AS '記錄數'
	, SUM(TRUNCATE(data_length / 1024 / 1024, 2)) AS '資料容量(MB)'
	, SUM(TRUNCATE(index_length / 1024 / 1024, 2)) AS '索引容量(MB)'
FROM information_schema.TABLES
WHERE table_schema = 'mysql';

-- 檢視指定資料庫各個表容量大小,例:檢視mysql庫各表容量大小
SELECT table_schema AS '資料庫', table_name AS '表名', table_rows AS '記錄數'
	, TRUNCATE(data_length / 1024 / 1024, 2) AS '資料容量(MB)'
	, TRUNCATE(index_length / 1024 / 1024, 2) AS '索引容量(MB)'
FROM information_schema.TABLES
WHERE table_schema = 'mysql'
ORDER BY data_length DESC, index_length DESC;

MySQL中information_schema.TABLES欄位說明

欄位含義
Table_catalog資料表登記目錄
Table_schema資料表所屬的資料庫名
Table_name表名稱
Table_type表型別[system view|base table]
Engine使用的資料庫引擎[MyISAM|CSV|InnoDB]
Version版本,預設值10
Row_format行格式[Compact|Dynamic|Fixed]
Table_rows表裡所存多少行資料
Avg_row_length平均行長度
Data_length資料長度
Max_data_length最大資料長度
Index_length索引長度
Data_free空間碎片
Auto_increment做自增主鍵的自動增量當前值
Create_time表的建立時間
Update_time表的更新時間
Check_time表的檢查時間
Table_collation表的字元校驗編碼集
Checksum校驗和
Create_options建立選項
Table_comment表的註釋、備註

舉例:

-- 檢視錶的大小,條數,可以查data_length,table_rows
SELECT TABLE_NAME
	, concat(truncate(data_length / 1024 / 1024, 2), ' MB') AS data_size
	, table_rows
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'mysql'
	AND TABLE_NAME IN ("db", "user");

相關文章