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

embedded/2025/3/15 2:30:38/

最近有个需求需要查询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.ppmy.cn/embedded/172642.html

相关文章

解决Windows版Redis无法远程连接的问题

🌟 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时,很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时,可能会报错“Cannot connect to ‘redisconnection’”。今天&am…

自动化测试框架学习总结

视频:hytest - 测试自动化框架_哔哩哔哩_bilibili 资料:hytest 框架 - 白月黑羽 hytest 简介 hytest (黑羽test)是白月黑羽自己研发的自动化测试框架,它非常适合 做 系统测试 自动化, 而相比之下&#x…

【hot100】实现Trie(前缀树)

一、思路 这题的思路很简单,其实就是一个26叉树,但是这个数不同通过通常的左右节点属性,而是一个数组来存储的,每个数组下标存储下层的数组。其中有以下需要注意的点: 1.private Trie[] children; 这个说明孩子节点是…

软考高级《系统架构设计师》知识点(十三)

系统架构设计 软件架构的概念 一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。 体系结构并非可运行软件。确切地说,它是一种表达,使软件工程师能够&#xff1a…

《今日AI-人工智能-编程日报》

1. AI行业动态 1.1 Manus通用智能体初成型,开启AIAgent新时代 中泰证券发布研报称,首款通用型AI智能体Manus已问世,能够将复杂任务拆解为可执行的步骤链,并在虚拟环境中灵活调用工具,标志着AI从“Reasoner”走向“Ag…

laravel项目中使用FFMPeg 剪裁视频

# 运行环境需安装的软件 ffmpeg # 安装的扩展 pbmedia/laravel-ffmpeg: ^8.3 # 扩展文档 https://packagist.org/packages/pbmedia/laravel-ffmpeg # 引入的类 use FFMpeg\Coordinate\TimeCode; use FFMpeg\Format\Video\X264; use FFMpeg\Exception\RuntimeException; use …

Machine Learning中的模型选择

选择适合的机器学习模型是构建高效、准确模型的关键步骤。以下是决定选用哪个模型的主要考虑因素和步骤: 1. 明确问题类型 首先,明确你要解决的问题类型: 分类问题:预测离散类别(如垃圾邮件分类、图像识别&#xff09…

《C#上位机开发从门外到门内》2-3:SPI总线协议详解及应用实践

文章目录 一、引言二、SPI总线协议的基本原理三、SPI通信模式详解 —— CPOL与CPHA3.1 时钟极性(CPOL)3.2 时钟相位(CPHA)3.3 四种SPI模式 四、主从设备通信机制4.1 通信流程概述4.2 数据帧结构与传输细节4.3 主设备与从设备的协同…