mysql空间大小的SQL语句

介绍在mysql中如何查询所有数据库占用磁盘空间大小的SQL语句

如果想知道mysql 数据库中的每个表占用的空间、表记录的行数的话,可以打开mysql的information_schema数据库。

在该库中有一个tables表,这个表主要字段分别是:

tableschema:数据库名 tablename:表名
engine:所使用的存储引擎
tablerows:记录数
data
length:数据大小
index_length:索引大小

查询所有数据库占用磁盘空间大小的SQL语句:

select TABLESCHEMA, concat(truncate(sum(datalength)/1024/1024,2),' MB') as datasize, concat(truncate(sum(indexlength)/1024/1024,2),'MB') as indexsize
from information
schema.tables
group by TABLESCHEMA
order by data
length desc;

说明: informationschema.tables 使用informationschema的tables表
INDEXLENGTH以b为单位 INDEXLENGTH/1024以kb为单位 INDEX_LENGTH/1024/1024以mb为单位

查询单个库中所有表磁盘占用大小的SQL语句:

select TABLENAME, concat(truncate(datalength/1024/1024,2),' MB') as datasize, concat(truncate(indexlength/1024/1024,2),' MB') as indexsize
from information
schema.tables where TABLESCHEMA = 'sql6145961'
group by TABLE
NAME
order by data_length desc;

说明: TABLE_SCHEMA='sql6145961'表示查询的数据库为“sql6145961”

单数据库空间总数

总量

SELECT (SUM(DATALENGTH)+SUM(INDEXLENGTH))/1024/1024 as datasum FROM informationschema.tables WHERE TABLE_SCHEMA='sql6145961';

查行数等数据

SELECT TABLENAME,DATALENGTH+INDEXLENGTH,TABLEROWS FROM informationschema.tables WHERE TABLESCHEMA='sql6145961'