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. Scrapy如何在爬虫类中导入settings配置

    假设我们在settings.py定义了一个IP地址池 ##### 自定义设置 IP_PROXY_POOL = ( "127.0.0.1:6789", "127.0.0.1 ...

  2. 【类型转换】使用c#实现简易的类型转换(Emit,Expression,反射)

    引言 哈喽.大家好,好久不见,最近遇到了一个场景,就是在FrameWork的asp.net mvc中,有个系统里面使用的是EntityFramework的框架,在这个框架里,提供了一个SqlQuery ...

  3. 快速批量升级 NugetPackage 版本

    批量升级项目中的 Nuget 有时候我们需要升级整个解决方案中的某些Nuget版本,如果每个手动使用NuGet Package Manager 会很麻烦.经过一个周末的踩坑,我找到一个解决方案. Na ...

  4. 化蛹成蝶,华为云DevCloud助力互联网+转型,重构钢铁产业链

    摘要:随着电子商务迅速发展,各个行业巨头纷纷投入互联网+的怀抱,钢铁行业作为典型的传统行业,如何实现华丽转身,拥抱市场,加快产业新旧动能转换? 本文分享自华为云社区<化蛹成蝶,华为云DevClo ...

  5. 鸿蒙轻内核M核源码分析:中断Hwi

    摘要:本文带领大家一起剖析了鸿蒙轻内核的中断模块的源代码,掌握中断相关的概念,中断初始化操作,中断创建.删除,开关中断操作等. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列五 中断Hwi&g ...

  6. 带你了解NB-IoT标准演进

    摘要:本文将带大家详细了解NB-IoT标准演进与产业发展. 本文分享自华为云社区<一文带你了解NB-IoT标准演进与产业发展>,作者:万万万. 我们都知道,物联网的场景和手机.电脑在使用的 ...

  7. 1g云主机升级centos8不满足centos 8 至少2g内存要求,linux虚拟内存来凑

    centos8 官方说,至少2g内存,推荐4g内存,像我的个人博客,zhoulujun.cn ,这种个人博客有不赚钱,丢个5美金一个月的1g内存,1核cpu,就够了. 强制升级到centos8,ngi ...

  8. 如何快速从 ETL 到 ELT?火山引擎 ByteHouse 做了这三件事

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 前言 当涉及到企业分析场景时,所使用的数据通常源自多样的业务数据,这些数据系统大多采用以行为主的存储结构,比如支付 ...

  9. 十分钟读懂火山引擎 DataLeap 数据治理实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前,火山引擎数智平台 VeDI 直播活动「超话数据」在线举办,来自火山引擎 DataLeap 数据产品专家从数据 ...

  10. Solon 开发进阶,三、常用配置说明

    Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 应用主配置文件为: resources/app.yml( 或 app.propertie ...