MySQL 查询库 和 表 占用空间大小的 语句

查看mysql 数据库的大小

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

查询数据库中表的 数据量(这个方法 有缓存延迟,只能用于参照)

SELECT TABLE_NAME, TABLE_ROWS 
FROM information_schema.tables 
WHERE<
### MySQL 查询表空间大小 SQL 语句MySQL 中,虽然不像 Oracle 那样有明确的“空间”概念,但可以通过 `information_schema` 数据库中的元数据来获取类似于空间的信息。以下是查询 MySQL 空间大小的相关 SQL 语句: #### 查询整个数据库的总大小 通过汇总所有的数据长度索引长度,可以获得某个数据库的整体大小。 ```sql SELECT table_schema AS 'Database', CONCAT(ROUND(SUM(data_length + index_length) / (1024 * 1024), 2), ' MB') AS 'Size' FROM information_schema.tables WHERE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema') GROUP BY table_schema; ``` 此查询会返回每个数据库及其对应的磁盘占用大小[^2]。 --- #### 查询单个的具体大小 如果需要查看特定的空间使用情况,可以按名分组并计算其数据大小索引大小。 ```sql SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS TableName, CONCAT(ROUND((DATA_LENGTH + INDEX_LENGTH) / (1024 * 1024), 2), ' MB') AS TableSizeMB FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name' -- 替换为实际的数据库名称 ORDER BY DATA_LENGTH DESC; ``` 该语句能够帮助定位哪些占用了较多存储空间[^3]。 --- #### 查看文件系统的物理存储分布 对于 InnoDB 存储引擎,默认情况下可能会共享一个全局空间文件(如 `ibdata1`)。为了更精确地了解的实际磁盘消耗,还可以结合操作系统命令统计 `.frm` `.ibd` 文件的大小。例如,在 Linux 上执行以下命令: ```bash du -sh /var/lib/mysql/your_database_name/* ``` 这一步补充了基于 SQL 的逻辑视图无法覆盖的部分细节[^1]。 --- ### 注意事项 - 如果启用了独立空间模式 (`innodb_file_per_table=ON`),则每张都会对应单独的 `.ibd` 文件。 - 对于未启用独立空间的情况,部分可能仍然依赖于全局共享空间文件 `ibdata1`,因此仅靠 SQL 查询难以完全反映真实状况。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安得权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值