介绍在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’