Post Jobs

mysql如何查看哪些表数据量比较大,查看数据库

mysql如何查看哪些表数据量比较大

<h3>查询所有[数据库]占用磁盘空间大小</h3>
<pre>
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_size desc;

 

order by data_length desc;

</pre>

<h3>查询单个库中所有表磁盘占用大小</h3>
<pre>
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 = ‘mysql’
group by TABLE_NAME
order by data_length desc;
</pre>

<h3>information_schema 中有数个只读表。它们实际上是视图
,而不是基本表,因此,你将无法看到与之相关的任何文件</h3>
<pre>
mysql> desc information_schema.tables;
+—————–+———————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+—————–+———————+——+—–+———+——-+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | | 数据库名
| TABLE_NAME | varchar(64) | NO | | | | 表名
| TABLE_TYPE | varchar(64) | NO | | | | 引擎
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | | 是否压缩
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据空间大小
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据索引大小
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+—————–+———————+——+—–+———+——-+
</pre>

     
数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询这些信息了。

         
 在mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。

  www.2cto.com  

      mysql> show databases;

+——————–+

| Database           |

+——————–+

| information_schema |

|mysql             |

|report            |

| report_result      |

|test              |

+——————–+

5 rows in set (0.02 sec)

 

mysql> use information_schema;

Database changed

mysql> show tables;

+—————————————+

|Tables_in_information_schema         |

+—————————————+

|CHARACTER_SETS                       |

|COLLATIONS                           |

| COLLATION_CHARACTER_SET_APPLICABILITY |

|COLUMNS                              |

|COLUMN_PRIVILEGES                    |

|KEY_COLUMN_USAGE                     |

|PROFILING                            |

|ROUTINES                             |

|SCHEMATA                             |

|SCHEMA_PRIVILEGES                    |

|STATISTICS                           |

|TABLES                               |

|TABLE_CONSTRAINTS                    |

|TABLE_PRIVILEGES                     |

|TRIGGERS                             |

|USER_PRIVILEGES                      |

|VIEWS                                |

+—————————————+

17 rows in set (0.00 sec)

 

那么我们查看一下talbes表结构信息,看看存储的具体信息

  www.2cto.com  

mysql> desc tables;

+—————–+————–+——+—–+———+——-+

| Field           |Type         | Null | Key | Default |Extra |

+—————–+————–+——+—–+———+——-+

| TABLE_CATALOG   | varchar(512) | YES |     | NULL   |       |

| TABLE_SCHEMA    | varchar(64)  | NO  |     |        |       |

| TABLE_NAME      | varchar(64)  | NO  |     |        |       |

| TABLE_TYPE      | varchar(64)  | NO  |     |        |       |

| ENGINE          |varchar(64)  | YES  |     |NULL    |       |

| VERSION         |bigint(21)   | YES  |     |NULL    |       |

| ROW_FORMAT      | varchar(10)  | YES |     | NULL   |       |

| TABLE_ROWS      | bigint(21)   | YES |     | NULL   |       |

| AVG_ROW_LENGTH  | bigint(21)   | YES |     | NULL   |       |

| DATA_LENGTH     | bigint(21)   | YES |     | NULL   |       |

| MAX_DATA_LENGTH | bigint(21)   | YES |     | NULL   |       |

| INDEX_LENGTH    | bigint(21)   | YES |     | NULL   |       |

| DATA_FREE       | bigint(21)   |YES  |     | NULL   |       |

| AUTO_INCREMENT  | bigint(21)   | YES |     | NULL   |       |

| CREATE_TIME     | datetime     |YES  |     | NULL   |       |

| UPDATE_TIME     | datetime     |YES  |     | NULL   |       |

| CHECK_TIME      | datetime     |YES  |     | NULL   |       |

| TABLE_COLLATION | varchar(64)  | YES  |     |NULL    |       |

| CHECKSUM        | bigint(21)   |YES  |     | NULL   |       |

| CREATE_OPTIONS  | varchar(255) | YES  |     |NULL    |       |

| TABLE_COMMENT   | varchar(80)  | NO  |     |        |       |

+—————–+————–+——+—–+———+——-+

21 rows in set (0.00 sec)

 

主要存储了表的信息如表使用的引擎,表的类型等信息。我们可以通过查询table_rows属性获得哪些表数据量比较大。

 

mysql> select table_name,table_rows from  tables order by
table_rows desc limi 10;

 

+—————+————+

  www.2cto.com  

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图