Mysql 统计数据库,表的数据大小

Mysql 统计数据库数据大小

当我们需要知道数据库占用了多少磁盘大小,可以通过一些sql语句查询到整个数据库的容量,也可以单独查看表所占容量。

# 根据条件查询,打印出查询的表的数据大小(逐个表打印信息)

use information_schema

select TABLE_NAME, concat(truncate(DATA_LENGTH/1024/1024,2), 'MB') as data_size,concat(truncate(INDEX_LENGTH/1024/1024,2), 'MB') as index_size from TABLES where TABLE_NAME like '%20210131%' order by data_length desc; 

# 根据条件查询,打印出查询的表的数据大小(累加全部)

select TABLE_NAME, concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data_size,concat(round(sum(INDEX_LENGTH/1024/1024),2), 'MB') as index_size from TABLES where TABLE_NAME like '%20210131%' ;

#如果没有 where 就是查询全部

说明:

TABLE_SCHEMA : 数据库名

TABLE_NAME:表名

DATA_LENGTH:数据大小

INDEX_LENGTH:索引大小

ORDER BY:根据查询出来的大小进行排序

 

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;`,但这会在全扫描后返回确切的行数,可能会阻塞一段时间。 请注意,以上方法均存在一定的局限性,如果需要准确的实时数据量,最好还是在业务不繁忙的时候做实际计数。如果你的数据库很大并且频繁变化,那么最好是定期刷新计数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值