MySQL 得到数据库的大小

1. 命令行方式

前言介绍:

   要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。

   show databases; (查看有多少 database, 也叫做table schema; 有点串用)


1.1 查看单个database(或是table schema)占用的大小

select sum(DATA_LENGTH)+sum(INDEX_LENGTH) from information_schema.tables
where table_schema='数据库名';

得到的结果是以字节为单位的, 换算成兆的话 除以 1024*1024

备注: information_schema库中包含了对整个数据库的很多统计信息,可以通过查看它们,来得到数据库相关的信息


省事一点,直接进入information_schema 查看

use information_schema;


接下来忽略索引的大小

1.2 查询所有数据的大小

select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from tables;
这个需要的时间会长一些


1.3 查看数据库的某个表的大小

select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from tables where table_schema=’数据库名’ AND table_name=’表名’;



2. 软件查看方式

可以安装 PhpMyAdmin 也可以看到



MySQL中,获取数据库表的总数据量通常不是直接计算得出的,因为大部分数据库系统都不支持这种实时统计功能。但是,你可以通过估算、SQL查询或者第三方工具来获得一个近似的值。 1. **估算**:如果你有定期更新的数据增长记录,可以基于历史增长量来估算当前数据量。 2. **SQL查询**:对于MyISAM存储引擎,有一个`MYISAM_DATA_SIZE`系统视图可以提供已分配给行和索引的磁盘空间总量,但由于这可能包括空闲空间,所以不是精确的行数。对于InnoDB等其他存储引擎,没有这样的内置视图。 对于近似行数,你可以尝试使用`SHOW TABLE STATUS LIKE 'your_table_name';`命令,它会返回`Rows`字段,但这同样可能是估计值,并且只适用于InnoDB表,因为它依赖于行级别的唯一键缓存。 3. **第三方工具**:有许多数据库管理工具,如Navicat、HeidiSQL等,它们可以直接显示表的行数,或者提供更详细的统计信息。 4. **计数所有行**:如果你能容忍一定程度的延迟,也可以选择对所有行做一次计数,例如使用`SELECT COUNT(*) FROM your_table;`,但这会在全表扫描后返回确切的行数,可能会阻塞一段时间。 请注意,以上方法均存在一定的局限性,如果需要准确的实时数据量,最好还是在业务不繁忙的时候做实际计数。如果你的数据库很大并且频繁变化,那么最好是定期刷新计数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oscar999

送以玫瑰,手留余香

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

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

打赏作者

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

抵扣说明:

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

余额充值