您的位置:首页 > 文旅 > 美景 > 商丘做网站的公司_网络营销方案例文_自己个人怎样做电商_东营seo网站推广

商丘做网站的公司_网络营销方案例文_自己个人怎样做电商_东营seo网站推广

2025/3/15 12:44:47 来源:https://blog.csdn.net/u013762572/article/details/146226340  浏览:    关键词:商丘做网站的公司_网络营销方案例文_自己个人怎样做电商_东营seo网站推广
商丘做网站的公司_网络营销方案例文_自己个人怎样做电商_东营seo网站推广

最近有个需求需要查询MySQL表所占的体积(磁盘空间)大小,有几个方法记录一下:

1. 使用 INFORMATION_SCHEMA 数据库

这是最常用的方法,可以查询单个表或整个数据库的大小:

-- 查询特定表的大小
SELECT table_name AS '表名',ROUND(data_length/1024/1024, 2) AS '数据大小(MB)',ROUND(index_length/1024/1024, 2) AS '索引大小(MB)',ROUND((data_length + index_length)/1024/1024, 2) AS '总大小(MB)'
FROM information_schema.TABLES 
WHERE table_schema = '数据库名' AND table_name = '表名';

或者:

-- 查询整个数据库中所有表的大小并排序
SELECT table_name AS '表名',ROUND(data_length/1024/1024, 2) AS '数据大小(MB)',ROUND(index_length/1024/1024, 2) AS '索引大小(MB)',ROUND((data_length + index_length)/1024/1024, 2) AS '总大小(MB)'
FROM information_schema.TABLES 
WHERE table_schema = '数据库名'
ORDER BY (data_length + index_length) DESC;

2. 使用 SHOW TABLE STATUS 命令

-- 查看特定表的状态信息
SHOW TABLE STATUS FROM 数据库名 WHERE Name = '表名';

或者:

-- 格式化输出表大小
SELECT table_name AS '表名', ROUND(((data_length + index_length) / 1024 / 1024), 2) AS '总大小(MB)'
FROM information_schema.TABLES 
WHERE table_schema = '数据库名' AND table_name = '表名';

3. 计算整个数据库的大小

-- 计算整个数据库的大小
SELECT table_schema AS '数据库', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS '总大小(MB)' 
FROM information_schema.TABLES 
WHERE table_schema = '数据库名' 
GROUP BY table_schema;

4. 在文件系统中查看实际文件大小

如果您有服务器访问权限,可以直接查看数据文件:

# 找到数据目录
mysql -e "SHOW VARIABLES LIKE 'datadir';"# 查看文件大小
cd /path/to/mysql/data/数据库名
ls -lh *.ibd

注意事项:

  1. InnoDB和MyISAM表的差异:
    InnoDB可能会有表空间分配但未使用的空间
    查询结果是分配的空间,不一定是实际使用的空间
  1. 数据压缩:
    如果使用了压缩表,实际磁盘占用会小于查询结果
  1. 权限要求:
    需要对information_schema有读取权限
  1. 数据一致性:
    数据会有轻微延迟,不一定100%实时准确

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com