如何查询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