查询数据库和表的大小

Posted 关灯吃面

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询数据库和表的大小相关的知识,希望对你有一定的参考价值。

如果想知道mysql数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:

TABLE_SCHEMA : 数据库名

TABLE_NAME:表名

ENGINE:所使用的存储引擎

TABLES_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; 

然后是查询单个数据库里面各个表所占磁盘空间大小包括其索引的大小的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 = TestDB  
group by TABLE_NAME  
order by data_length desc;

 注意将SQL语句中的TestDB换成你自己的数据库名称即可!

要想知道每个数据库的大小的话,步骤如下:

1、进入information_schema 数据库(存放了其他的数据库的信息)

  use information_schema;
2、查询所有数据的大小:

  select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables;

3、查看指定数据库的大小: 比如查看数据库home的大小

  select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables where table_schema=‘home‘;

4、查看指定数据库的某个表的大小 比如查看数据库home中 members 表的大小

  select concat(round(sum(data_length/1024/1024),2),‘MB‘) as data from tables where table_schema=‘home‘ and table_name=‘members‘;

 

参考:

http://blog.csdn.net/wangpanyang/article/details/46005209

http://www.jb51.net/article/39130.htm

http://www.t086.com/article/5167

 

以上是关于查询数据库和表的大小的主要内容,如果未能解决你的问题,请参考以下文章

mysql查看数据库和表的占用空间大小

如何查询 BigQuery 视图和表的依赖关系?

MySQL数据库名和表名无法大写的问题

MySQL 基础教程-08 查询数据库和表信息

PostgreSQL字段名和表名大小写的问题

SQLServer自动创建数据库和表?