📜  返回mysql中表的大小(1)

📅  最后修改于: 2023-12-03 14:57:56.079000             🧑  作者: Mango

返回 MySQL 中表的大小

在 MySQL 中,我们可以通过以下几种方式来返回表的大小信息:

1. 使用 SHOW TABLE STATUS 命令
SHOW TABLE STATUS LIKE 'table_name';

该命令会返回包含表信息的一张表格,表中包含了多个列,其中 Data_lengthIndex_length 分别表示数据和索引占用的空间大小,单位为字节。可以将两者相加,得到表的总大小。

示例代码:

SHOW TABLE STATUS LIKE 'users';

输出结果:

+-------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| 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 |
+-------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| users | InnoDB |      10 | Dynamic    | 688248 |             91 |    62899200 |               0 |      1048576 |  20971520 |           NULL | 2022-01-01 00:00:00 | 2022-01-01 00:00:00 | NULL       | utf8_general_ci |     NULL |                |         |
+-------+--------+---------+------------+--------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
2. 使用 SELECT COUNT(*) 命令
SELECT COUNT(*) FROM table_name;

该命令会返回表中的总行数,我们可以根据每行的平均大小来计算出表的总大小。

示例代码:

SELECT COUNT(*) FROM users;

输出结果:

+----------+
| COUNT(*) |
+----------+
|   688248 |
+----------+
3. 使用 INFORMATION_SCHEMA.TABLES 表
SELECT table_name, CONCAT((data_length + index_length)/1024/1024, 'MB') AS table_size FROM information_schema.tables WHERE table_schema = 'database_name' AND table_name = 'table_name';

该命令会返回表的名称和大小信息,其中 table_schematable_name 分别表示所属数据库和表名,data_lengthindex_length 分别表示数据和索引占用的空间大小,单位为字节。

示例代码:

SELECT table_name, CONCAT((data_length + index_length)/1024/1024, 'MB') AS table_size FROM information_schema.tables WHERE table_schema = 'testdb' AND table_name = 'users';

输出结果:

+-----------+------------+
| table_name| table_size |
+-----------+------------+
| users     | 60.12MB    |
+-----------+------------+

以上是三种常见的方法,你可以根据自己的需要选择不同的方式来返回表的大小信息。