如何查询MySQL表的大小(mysql一张表有多大)

如何查询MySQL表的大小?

MySQL是开源的关系型数据库管理系统,也是Web应用程序的重要组成部分之一。正常情况下,一个MySQL数据库可能含有多个表,这些表在才有行、列和索引等数据结构的基础上,存储着各种各样的数据。查询MySQL表的大小是管理员和开发者日常管理的一个基本操作,本文将介绍两种查询表大小的方法。

方法一:使用内置系统表

在MySQL中,可以使用 SHOW TABLE STATUS 或 INFORMATION_SCHEMA.TABLES 两个系统表查询表的元数据信息。其中,SHOW TABLE STATUS 可以显示表的数据文件大小、索引文件大小、平均行长度、总行数,而 INFORMATION_SCHEMA.TABLES 列出了数据库中所有表的详细信息,包括表的行数、大小、引擎等等。

使用SHOW TABLE STATUS查询

可以使用以下语法查询MYSQL中单张表的大小和行数量:

SHOW TABLE STATUS FROM [database_name] LIKE ‘[table_name]’;

如下面的例子,该命令查询了数据库中名为“test”的表的元数据信息:

mysql> SHOW TABLE STATUS FROM test LIKE “book”;

输出结果包含诸如数据长度、索引长度、总长度、行数和平均行长度等信息。

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

| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |

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

| book | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 32768 | 0 | NULL | 2017-08-25 12:10:36 | NULL | NULL | utf8_general_ci | NULL | | |

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

数据文件大小为16384字节,索引文件大小为32768字节。

使用INFORMATION_SCHEMA.TABLES查询

你也可以使用系统数据库information_schema中的TABLES查询表的信息。以下是代码示例:

SELECT table_schema “Database”, sum(data_length+index_length)/1024/1024 “Table size (MB)”

FROM information_schema.TABLES

GROUP BY table_schema;

这个语句将给出每个库的每个表的大小

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

| Database | Table size (MB) |

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

| mysql | 1.2250 |

| performance_schema | 0.0000 |

| sys | 0.0156 |

| test | 0.0156 |

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

方法二:文件系统命令

使用查询命令可以很方便地得到表的大小,还可以利用文件系统命令快速地得到表所占用的磁盘空间。

进入MYSQL数据文件所在文件夹,通过ls –l 可以列出数据目录下的所有文件及文件大小,其中的.frm结尾的文件是表的结构文件,.MYD是数据文件,.MYI是索引文件。那么使用以下命令就可以查询数据文件大小:

du -h table1.MYD

这时会在屏幕上输出以“M”或“G”为单位的表的数据文件大小。

通过以上两种方法,你可以轻易查询MYSQL中表的大小,无论在日常的维护还是生产环境上的运维,这个操作都是非常有必要和便捷的。

代码示例:

— select

SHOW TABLE STATUS LIKE ‘table_name’;

— information_schemaでテーブルサイズの合計

SELECT table_schema “データベース名”,

SUM( data_length + index_length ) / 1024 / 1024 “テーブルサイズ(MB)”

FROM information_schema.TABLES

GROUP BY table_schema;

— ファイルで確認

du -h ファイル名.MYD


数据运维技术 » 如何查询MySQL表的大小(mysql一张表有多大)