ホームページ >データベース >mysql チュートリアル >mysql如何查看哪些表数据量比较大_MySQL

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

WBOY
WBOYオリジナル
2016-06-01 13:41:191175ブラウズ

bitsCN.com
mysql如何查看哪些表数据量比较大       数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询这些信息了。           在mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。         mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema ||mysql             ||report            || report_result      ||test              |+--------------------+5 rows in set (0.02 sec) mysql> use information_schema;Database changedmysql> 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表结构信息,看看存储的具体信息   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; +---------------+------------+   | table_name    |table_rows | +---------------+------------+ | task6        |    1558845 | | task         |    1554399 | | task5        |    1539009 | | task3        |    1532169 | | task1        |    1531143 | | task2        |    1531143 | | task4        |    1521225 | | task7        |     980865 | 我们继续深入思考,这些存储的数据是否准确,是否真实的反应了表中数据量大小? mysql> show create table tables /G; *************************** 1. row***************************      Table: TABLES   Create Table: CREATE TEMPORARY TABLE`TABLES` (  `TABLE_CATALOG` varchar(512) default NULL,  `TABLE_SCHEMA` varchar(64) NOT NULL default '',  `TABLE_NAME` varchar(64) NOT NULL default '',  `TABLE_TYPE` varchar(64) NOT NULL default '',  `ENGINE` varchar(64) default NULL,  `VERSION` bigint(21) default NULL,  `ROW_FORMAT` varchar(10) default NULL,  `TABLE_ROWS` bigint(21) default NULL,  `AVG_ROW_LENGTH` bigint(21) default NULL,  `DATA_LENGTH` bigint(21) default NULL,  `MAX_DATA_LENGTH` bigint(21) default NULL,  `INDEX_LENGTH` bigint(21) default NULL,  `DATA_FREE` bigint(21) default NULL,  `AUTO_INCREMENT` bigint(21) default NULL,  `CREATE_TIME` datetime default NULL,  `UPDATE_TIME` datetime default NULL,  `CHECK_TIME` datetime default NULL,  `TABLE_COLLATION` varchar(64) default NULL,  `CHECKSUM` bigint(21) default NULL,    `CREATE_OPTIONS` varchar(255) default NULL,  `TABLE_COMMENT` varchar(80) NOT NULL default '' ) ENGINE=MEMORY DEFAULTCHARSET=utf8 看到上面红色的字体了吧,information_schema下的表tables是内存表,数据库启动的时候,会读取分析各表中数据,然后填充tables表。如果某些表更新频繁,而来不及更新tables表的时候,tables中存储的数据就不一定准确了,这会影响到执行计划的分析,索引在执行计划的时候,可以analyze表,然后确保存储的信息准确。  作者 aeolus_pu bitsCN.com

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。