`

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 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表结构信息,看看存储的具体信息

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表,然后确保存储的信息准确。

转自:http://blog.csdn.net/aeolus_pu/article/details/7804771
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    如何统计MySQL数据量大小

    在数据库管理中,了解MySQL数据量的大小是至关重要的,这有助于优化性能、规划存储空间以及进行容量规划。本文将详细讲解如何统计MySQL数据库的数据量大小,并涉及CONCAT函数的解读,以及对information_schema和...

    mysql数据库大数据量导入导出多种方法

    mysql数据库大数据量导入导出多种方法,该文档详述SELECT * INTO和mysqldump导出方法。导入方法中包括导入sql,txt文件和load data三种方法

    MySQL删除表数据 MySQL清空表命令 3种方法

    在选择适合的删除方法时,要考虑数据量、是否需要保留自增ID、是否存在外键约束以及性能需求等因素。对于大型表和频繁的清空操作,`TRUNCATE TABLE` 通常是最佳选择,因为它速度快且资源消耗低。然而,在需要保留...

    Oracle Mysql DM等数据库统计表数据量和条数.docx

    不同的数据库管理系统,如MySQL、Oracle和DM(达梦数据库),都提供了不同的方法来统计表数据量和条数。本文将对这些方法进行详细的介绍和分析。 一、MySQL统计表数据量和条数 在MySQL中,可以使用信息_schema...

    mysql如何处理大数据量的查询

    在实际的任何一个系统中,查询都是必不可少的一个功能,而查询设计的好坏又影响到系统的响应时间和性能这两个关键指标,尤其是当数据量变得越来越大时,于是如何处理大数据量的查询成了每个系统架构设计时都必须面对...

    大数据量测试数据(MySQL)

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在处理大数据量时表现出色。在这个主题中,我们关注的是如何利用MySQL进行大数据量的测试和优化。提供的压缩包文件包含了一系列的SQL脚本和数据备份,用于...

    mysql200万条大数据量测试sql文件

    mysql200万+条大数据量测试sql文件,可以用于测试服务器数据库性能,学习sql性能优化和调优。资源是.sql文件压缩后上传。用navicat导入实测用时几分钟时间,数据量200W+条。快速获取百万级真实测试数据。

    MySQL数据表添加字段

    2. **查看表结构**:使用`DESCRIBE`或`DESC`命令查看表的结构,确认当前的字段列表。 3. **添加字段**:通过`ALTER TABLE`命令添加新的字段,例如`age`(年龄),数据类型为INT。命令如下: ```sql ALTER TABLE ...

    shell脚本实现mysql从原表到历史表数据迁移

    总的来说,这个Shell脚本是数据库管理员和运维人员的一个实用工具,它简化了MySQL数据迁移的过程,提高了工作效率,同时保持了数据的完整性。正确理解和使用此类脚本,对于管理和维护复杂数据库环境至关重要。

    mysql-oracle数据同步

    本文将深入探讨MySQL到Oracle的数据同步过程,以及如何在同步过程中修改MySQL数据表的标识。 首先,我们要理解MySQL和Oracle是两种不同的关系型数据库管理系统(RDBMS)。MySQL以其开源、轻量级、高效的特点被广泛...

    利用Flume将MySQL表数据准实时抽取到HDFS、MySQL、Kafka

    标题中的“利用Flume将MySQL表数据准实时抽取到HDFS、MySQL、Kafka”是一项数据集成任务,涉及Apache Flume、MySQL数据库、Hadoop Distributed File System (HDFS) 和Apache Kafka这四个关键技术。Flume是Apache的一...

    mysql 千万数据表 t_order.zip

    在大数据量下,索引是提升查询速度的关键。为经常用于查询的字段建立索引,例如,如果常常按用户ID或订单时间进行筛选,那么user_id和order_time字段就应创建索引。然而,过多的索引会影响写操作性能,因此需平衡...

    mysql 测试数据集,单表200万条数据

    - 分区:对于大数据量的表,可采用分区技术,将数据分散到多个物理存储上,加快查询速度。 - 编码:选择合适的字符编码,如UTF-8或UTF-8MB4,平衡存储空间和字符支持。 4. SQL语句: - SELECT查询:学习如何编写...

    C#在MySQL大量数据下的高效读取、写入详解

    在C#中与MySQL数据库进行大规模数据交互时,性能优化是关键,特别是在处理千万级别的数据。本文将探讨如何高效地读取和写入大量数据,主要分为三个步骤:解决读取问题、数据处理和数据插入。 ### 第一步:解决读取...

    中国省市区城市列表mysql数据表,可直接导入数据库、可转JSON数据,带行政区划码和经纬度

    标题中的“中国省市区城市列表mysql数据表”指的是一个包含了中国所有省份、城市、区县的数据表,专门设计用于MySQL数据库系统。这个数据表能够帮助用户快速构建与地理位置相关的应用程序,比如地图服务、物流配送...

    从MySQL导入导出大量数据的程序实现方法

    脚本通过`mysql_connect`连接到数据库,`mysql_select_db`选择需要操作的数据库,`mysql_query`执行SQL查询获取所有表的数据,然后将结果逐行写入文本文件。为了处理可能存在的换行符问题,使用`str_replace`函数...

    MySQL百万级数据量分页查询方法及其优化建议

    在MySQL中,面对百万级数据量的分页查询,如何高效地进行操作并优化查询性能是数据库管理员和开发人员必须关注的问题。以下是一些常用的方法和优化建议: 1. **直接使用LIMIT语句**:这是最基础的分页查询方式,如`...

    MySQL千万数据解决方案

    缺点:有优化瓶颈,数据量过亿就玩完了。 方案二:升级数据库类型,换一种100%兼容mysql的数据库。优点:不影响现有业务,源程序不需要修改代码,你几乎不需要做任何操作就能提升数据库性能,缺点:多花钱 方案三...

    mysql数据表导出生成xml文件和树形结构

    总之,MySQL数据表导出到XML文件是一个涉及数据库连接、数据查询、XML生成和数据可视化的综合过程。"XMLmaker"可能是一个集成了这些功能的工具,帮助用户方便地管理和查看数据库数据。在实际操作中,理解这些基本...

Global site tag (gtag.js) - Google Analytics