mysql怎么查看表大小_mysql查看数据库表占用空间的方法

来源:这里教程网 时间:2026-02-28 20:23:25 作者:

在MySQL中查看表大小,可以通过查询

information_schema
数据库中的系统表来获取表的存储空间信息。以下是几种常用方法,帮助你快速了解每张表占用的空间大小。

1. 查看指定数据库中所有表的大小

执行以下SQL语句可以查看某个数据库中每张表的数据大小、索引大小和总占用空间(单位为MB):

示例(替换 your_database_name 为实际数据库名):

SELECT 
    table_name AS '表名',
    round(((data_length + index_length) / 1024 / 1024), 2) AS '总大小(MB)',
    round((data_length / 1024 / 1024), 2) AS '数据大小(MB)',
    round((index_length / 1024 / 1024), 2) AS '索引大小(MB)',
    table_rows AS '行数'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC;

说明:

data_length
:表数据所占字节数
index_length
:索引所占字节数
table_rows
:表的近似行数(对于InnoDB可能不精确)
除以 1024 / 1024 将字节转换为MB

2. 查看单个表的大小

如果你只想查看某一张表的空间使用情况,可以在上面的SQL中加上表名条件:

SELECT 
    table_name AS '表名',
    round(((data_length + index_length) / 1024 / 1024), 2) AS '总大小(MB)',
    round((data_length / 1024 / 1024), 2) AS '数据大小(MB)',
    round((index_length / 1024 / 1024), 2) AS '索引大小(MB)'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
  AND table_name = 'your_table_name';

3. 查看所有数据库的总大小分布

如果你想了解每个数据库总共占用了多少空间,可以按数据库分组统计:

SELECT 
    table_schema AS '数据库名',
    round(SUM(data_length + index_length) / 1024 / 1024, 2) AS '总大小(MB)'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;

注意事项

以下几点需要注意,避免误解结果:

上述结果中的大小是逻辑大小,不是磁盘上实际占用的物理空间(尤其是启用了压缩或文件系统块对齐时) InnoDB引擎的
table_rows
是估算值,不一定准确
如果表使用了分区,结果会自动汇总所有分区的大小 需要有访问
information_schema
的权限

基本上就这些。通过查询

information_schema.tables
,你可以快速掌握MySQL中各表的空间使用情况,便于性能优化和容量规划。

相关推荐