当前位置: 首页 > 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%实时准确
http://www.dtcms.com/a/73194.html

相关文章:

  • 重生之我在学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方法温故而知新
  • ROS2 系统架构
  • Linux调度器 --- 负载均衡的存在的问题
  • AI 助力医学统计:复杂临床数据处理的 “救星”
  • 【Oracle】19c数据库控制文件多路径配置
  • Docker 容器指标搜集工具cAdvisor
  • 一款基于Python的从常规文档里提取图片的简单工具开发方案
  • 用 Python 进行比特币数据分析:从入门到实战
  • k8s 配置两个deployment主机级别互斥部署
  • 硬件驱动——51单片机:寄存器、LED、动态数码管
  • Google Cloud Run 如何实现无服务器(Serverless)部署?