首页 > 代码库 > 查看mysql库大小,表大小,索引大小

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

说明:

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

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

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

 
查看所有库的大小
mysql> use information_schema;Database changedmysql> 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_yuserCreate 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=utf81 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) ASTotalFROM 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