1. 背景

DBA同事反馈说Mongp集群磁盘占用空间过大,超过监控告警95%阈值,因此建议删除部分资源或者申请扩容,本着开源节流的理念,还是乖乖看哪些老数据应该删除。但Mongo中的库和表过多,因此如何进行统计?


2. MongoDB库表占用空间统计

其实,MongoDB中库表的占用空间统计方式N多种,比如通过各种语言依赖包如java的mongodb-driver、python的pymongo等支持统计,选择个人擅长的一种即可。

由于mongo命令行支持运行js代码,因此计划使用js代码来执行(免得要打开各种IDE界面或命令行窗口)

2.1 库占用统计

库占用简单,运行如下命令即可

show dbs; 

运行结果如下

mongos> show dbs;
CloudCrawler 0.000GB
MarkHistory 0.025GB
Medal 0.005GB
Result 0.072GB
ResultHistory 0.051GB
admin 0.000GB
admind_for_test 0.000GB 

2.2 表占用统计

表占用统计,即统计每个库下每个表的大小,运行如下命令即可,该代码仅统计指定库下表的分布

tabName = db.getCollectionNames();
function getReadableFileSizeString(tabName) {
for(var j=0;j<tabName.length;j++){
var name=tabName[j];
var cnt=db.getCollection(name).find({}).count();
var fileSizeInBytes= db.getCollection(name).stats().size;
var i = -1;
var byteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
do {
fileSizeInBytes = fileSizeInBytes / 1024;
i++;
} while (fileSizeInBytes > 1024);
print(name + ' cnt:' + cnt + ' size:'+Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i]);
}
};
getReadableFileSizeString(tabName); 

运行结果,标识edt_manage_prod库下各个collection的统计

edu_manage_prod:
CheckTask cnt:53 size:7.7 kB
OCR_TMP_GFS.chunks cnt:2554250 size:96.6 GB
OCR_TMP_GFS.files cnt:2529063 size:1.2 GB
eduManifestQuestion cnt:709 size:15.7 MB
jhi_user cnt:0 size:0.1 kB
survey_result cnt:25 size:101.3 kB
survey_task cnt:19 size:44.6 kB
system.profile cnt:185 size:210.6 kB

3. 解决

按照如上即可统计中所有库对应表的占用大小,找到占比最大几张表,与业务线确认表是否仍在使用,确认后执行备份后删除即可。

注意:

(1) 执行db.collection.remove()只是清空数据,占用的磁盘空间仍没有释放,因此建议使用db.collection.drop()或执行remove后对该collection重命名,即可彻底释放

Mongo库表占用空间统计的更多相关文章

  1. MySQL数据库查看数据表占用空间大小和记录数

    MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHE ...

  2. MySQL查看表占用空间大小(转)

    MySQL查看表占用空间大小(转) //先进去MySQL自带管理库:information_schema //自己的数据库:dbwww58com_kuchecarlib //自己的表:t_carmod ...

  3. MySQL查看库表的大小

    MySQL数据库空间使用情况查询 如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表, ...

  4. mysql库表优化实例

    一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下 ...

  5. MySQL库表设计小技巧

    前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...

  6. oracle查询单表占用空间的大小

    oracle查询单表占用空间的大小 SELECT segment_name AS TABLENAME, BYTES B, BYTES KB, BYTES MB FROM user_segments w ...

  7. Hibernate 3中如何获得库表所有字段的名称

    15问:Hibernate 3中如何获得库表所有字段的名称 答:可以使用以下的程序获得. Configuration conf = new Configuration(); conf.configur ...

  8. 使用一个T-SQL语句批量查询数据表占用空间及其行数

    原文:使用一个T-SQL语句批量查询数据表占用空间及其行数 要找到数据库中数据表占用的空间和存在的行数.可以使用sp_spaceused搭配数据表的名称.就可以产生该表耗用的空间和现有行数. 如: U ...

  9. mysql基础之对库表操作

    原文:mysql基础之对库表操作 查看一下所有的库,怎么办? Mysql>Show databases; 选库语句: Use 库名 创建一个数据库: create database 数据库名 [ ...

  10. python Mysql 库表

    Mysql 库表    创建 学生信息库表  学生成绩 库表

随机推荐

  1. 介绍一款轻量型 Web SCADA 组态软件

    ​ 随着互联网.物联网技术的快速发展,图扑物联基于多年研发积累和私有部署实践打磨.以及对业务场景的深入理解,推出了适用于物联网应用场景的轻量型云组态软件. 该产品采用 B/S 架构,提供 Web 管理 ...

  2. 华企盾DSC备用服务器无法启动,日志显示“主服务器停机超过十天”

    ​ 出现该问题有三种情况: 1.主服务器未启动或授权到期: 2.主服务器申请的在线授权且ERP上存在到期的相同序列号: 3.备用服务器的数据库与主服务器连的不是同一个(检查IP和端口以及数据库名).

  3. idea2020.1.3汉化包报错问题

    已解决:idea2020.1.3汉化包报错问题 问题描述:插件市场提供的版本不对.不兼容,所以需要手动下载安装 这里附上文件 https://wwsi.lanzouq.com/b03czdtwf 密码 ...

  4. 【笔记】springSecurity-OAuth2.0-授权模式演示

    SpringSecurityOauth2架构 介绍 流程: 用户访问,此时没有Token.Oauth2RestTemplate会报错,这个报错信息会被Oauth2ClientContextFilter ...

  5. 在Windows操作系统中,使用powershell脚本批量删除、批量替换文件名

    比如我们下载的mp3文件或者小说.评书里都带很多作者.网站等信息,如何批量一键删除掉多余的字段呢? 下面举例:批量删除文件名称 可以看到原文中,所有文件名中均包含"小番茄与火龙果-" ...

  6. Linux集群存储配置

    RH436_EX集群 介绍Linux环境下集群架构,Linux开源集群软件的安装及配置使用,软件与软件之间的组合.实现高可用集群,负载均衡集群;负载均衡.高可用集群与存储集群间的多集群混合架构使用. ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (175)-- 算法导论13.3 4题

    四.用go语言,Teach 教授担心 RB-INSERT-FIXUP可能将 T.nil.color 设为 RED,这时,当 z 为根时第1行的测试就不会让循环终止.通过讨论 RB-INSERT-FIX ...

  8. OSG嵌入QT的简明总结2

    正文 我之前在这篇博文<OSG嵌入QT的简明总结>中论述了OSG在QT中显示的可视化问题.其中提到官方提供的osgQt项目(地址:https://github.com/opensceneg ...

  9. 云图说|OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse

    摘要:ClickHouse是俄罗斯公司Yandex在2016年开源的高性能.开源联机分析列式数据库管理系统.开源后,凭借卓越的分析性能.极好的线性扩展能力和丰富的功能,被业界公认为实时分析领域OLAP ...

  10. 盘点华为云GaussDB(for Redis)六大秒级能力

    摘要:盘点高斯Redis的秒级能力,包括扩容.备份.删除.启动等. 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第20期:六大秒级能力盘点>,作者: 高斯Redis ...