查看mysql库大小,表大小,索引大小

Posted 书山有路勤为径,学海无涯苦作舟

tags:

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

查看mysql库大小,表大小,索引大小

说明:

通过mysql的 information_schema 数据库,可查询数据库中每个表占用的空间、表记录的行数;该库中有一个 TABLES 表,这个表主要字段分别是:

TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小

其他字段请参考MySQL的手册,查看一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 。

 
查看所有库的大小
复制代码
mysql> use information_schema;
Database changed
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data  from TABLES;
+----------+
| data     |
+----------+
| 104.21MB |
+----------+
1 row in set (0.11 sec)
复制代码

查看指定库的大小

复制代码
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data  from TABLES where table_schema=\'jishi\';
+---------+
| data    |
+---------+
| 26.17MB |
+---------+
1 row in set (0.01 sec)
复制代码
查看指定库的指定表的大小
复制代码
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as data  from TABLES where table_schema=\'jishi\' and table_name=\'a_ya\';
+--------+
| data   |
+--------+
| 0.02MB |
+--------+
1 row in set (0.00 sec)
复制代码

查看指定库的索引大小

复制代码
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), \' MB\') AS \'Total Index Size\' FROM TABLES  WHERE table_schema = \'jishi\'; 
+------------------+
| Total Index Size |
+------------------+
| 0.94 MB          |
+------------------+
1 row in set (0.01 sec)
复制代码

查看指定库的指定表的索引大小

复制代码
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), \' MB\') AS \'Total Index Size\' FROM TABLES  WHERE table_schema = \'test\' and table_name=\'a_yuser\'; 
+------------------+
| Total Index Size |
+------------------+
| 21.84 MB         |
+------------------+
1 row in set (0.00 sec)
mysql> show create table test.a_yuser\\G;
*************************** 1. row ***************************
       Table: a_yuser
Create Table: CREATE TABLE `a_yuser` (
  `email` varchar(60) NOT NULL DEFAULT \'\',
  `user_name` varchar(60) NOT NULL DEFAULT \'\',
  KEY `cc` (`email`(5)),
  KEY `ccb` (`user_name`(5)),
  KEY `ccbc` (`email`(5),`user_name`(5))
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
ERROR: 
No query specified
 
mysql> select count(*) from test.a_yuser;
+----------+
| count(*) |
+----------+
|  1073607 |
+----------+
1 row in set (0.00 sec)
复制代码
查看一个库中的情况
复制代码
mysql>  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 \'test\';
+---------------+----------------+-----------+------------+---------+
| Table Name    | Number of Rows | Data Size | Index Size | Total   |
+---------------+----------------+-----------+------------+---------+
| test.a_br     | 0.4625M        | 0.0259G   | 0.0171G    | 0.0431G |
| test.a_skuclr | 0.7099M        | 0.0660G   | 0.0259G    | 0.0919G |
| test.a_yuser  | 1.0736M        | 0.0497G   | 0.0213G    | 0.0710G |
| test.test     | 0.0000M        | 0.0000G   | 0.0000G    | 0.0000G |
+---------------+----------------+-----------+------------+---------+
4 rows in set (0.13 sec)
复制代码

参考网址:
http://www.oschina.net/question/12_3673
http://blog.sina.com.cn/s/blog_4c197d420101fbl9.html
好记性不如烂笔头,把遇到的问题及其解决方法记录下来。

以上是关于查看mysql库大小,表大小,索引大小的主要内容,如果未能解决你的问题,请参考以下文章

随笔编号-16 MySQL查看表及索引大小方法

如何获取到mysql的某个数据库数据的大小和索引的大小是多少M?

MySQL查看库中所有表的大小和记录数

如何查看mysql数据库中各个表的大小

MySQL中查询表及索引大小的方法

MySQL查看数据库表容量大小