MySQL命令檢視資料庫和表容量大小

天府雲創發表於2019-03-07

用MySQL內建的資料庫 information_schema,該資料庫中的tables表儲存了其他資料庫中所有表的資訊。

use information_schema;

1、進去指定schema 資料庫(存放了其他的資料庫的資訊)
     mysql> use information_schema;


2、查詢所有資料的大小 
     mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;


3、檢視指定資料庫例項的大小,比如說資料庫 yoon 
     mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='yoon';


4、檢視指定資料庫的表的大小,比如說資料庫 yoon 中的 yoon 表 
     mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES 
                 where table_schema='yoon' and table_name='yoon';


5、指定庫的索引大小:


SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'sakila'; 


6、指定庫的指定表的索引大小:


SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'test' and table_name='sakila'; 


7、一個庫中的使用情況:


SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'sakila';

8、題外方法

直接用shell命令統計mysql data目錄中的大小(注意只有庫,不包含資料庫日誌大小)

備註 :

data_length :儲存資料大小

data_length/1024/1024:將位元組轉換為MB

round(sum(data_length/1024/1024),2):取兩位小數

concat(round(sum(data_length/1024/1024),2),'MB') :給計算結果追加單位 “MB”

相關文章