mysql空間大小的SQL語句

kernel_發表於2016-11-24

介紹在mysql中如何查詢所有資料庫佔用磁碟空間大小的SQL語句

如果想知道mysql 資料庫中的每個表佔用的空間、表記錄的行數的話,可以開啟mysql的information_schema資料庫。

在該庫中有一個tables表,這個表主要欄位分別是:

table_schema:資料庫名
table_name:表名
engine:所使用的儲存引擎
table_rows:記錄數
data_length:資料大小
index_length:索引大小

查詢所有資料庫佔用磁碟空間大小的SQL語句:

select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),’ MB’) as data_size,
concat(truncate(sum(index_length)/1024/1024,2),’MB’) as index_size
from information_schema.tables
group by TABLE_SCHEMA
order by data_length desc;

說明:
information_schema.tables 使用information_schema的tables表
INDEX_LENGTH以b為單位 INDEX_LENGTH/1024以kb為單位 INDEX_LENGTH/1024/1024以mb為單位

查詢單個庫中所有表磁碟佔用大小的SQL語句:

select TABLE_NAME, concat(truncate(data_length/1024/1024,2),’ MB’) as data_size,
concat(truncate(index_length/1024/1024,2),’ MB’) as index_size
from information_schema.tables where TABLE_SCHEMA = ‘sql6145961’
group by TABLE_NAME
order by data_length desc;

說明:
TABLE_SCHEMA=’sql6145961’表示查詢的資料庫為“sql6145961”

單資料庫空間總數

總量

SELECT (SUM(DATA_LENGTH)+SUM(INDEX_LENGTH))/1024/1024 as data_sum
FROM information_schema.tables WHERE TABLE_SCHEMA=’sql6145961’;

查行數等資料

SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS
FROM information_schema.tables WHERE TABLE_SCHEMA=’sql6145961’

相關文章