当前位置: 首页 > news >正文

查询MySQL表占用磁盘大小的方法

最近有个需求需要查询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%实时准确

相关文章:

  • 重生之我在学Vue--第14天 Vue 3 国际化(i18n)实战指南
  • vue-常用指令 | 常用指令的修饰符
  • DNS查询
  • Mysql与ElasticSearch间的数据同步场景模拟
  • Blender-MCP服务源码4-初始化项目解读
  • 算法——先序中序还原二叉树
  • ubuntu测试指定文件夹的读写速度
  • 深度学习-145-Text2SQL之基于官方提示词模板进行交互
  • VMware安装Centos
  • leetcode日记(100)填充每个节点的下一个右侧节点指针
  • go程序调用k8s pod副本的名称IP手动赋值给configmap的参数
  • 麒麟服务器操作系统Go环境部署手册
  • 麒麟服务器操作系统Redis部署手册
  • BGP实验(二)路由反射器
  • Spring Cloud Config - 动态配置管理与高可用治理
  • LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 论文阅读
  • uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能
  • ⚡️Jolt -- 通过JSON配置来处理复杂数据转换的工具
  • [Java实战]Spring Boot服务CPU 100%问题排查:从定位到解决
  • JS - 重点JS方法温故而知新
  • 国家统计局:1-4月份,全国固定资产投资同比增长4.0%
  • 持续降雨存在落石风险,贵州黄果树景区水帘洞将封闭至6月初
  • 《五行令》《攻守占》,2个月后国博见
  • 张国清将赴俄罗斯举行中俄“长江—伏尔加河”地方合作理事会第五次会议和“东北—远东”政府间合作委员会双方主席会晤
  • 独家 |《苏州河》上海上演,编剧海飞:上海的风能吹透我
  • 四川甘孜炉霍县觉日寺管委会主任呷玛降泽被查