mongodb 磁盘空间啥时候释放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb 磁盘空间啥时候释放相关的知识,希望对你有一定的参考价值。

参考技术A   mongodb自己是不会释放空间的。你需要根据实际情况考虑策略。

  mongodb之所以占用空间非常大,一是因为日志非常庞大,一是为了保证连续的存储空间本身会提前申请很大的空间。你可以根据需求选择禁用日志,或者一定时间日志轮询,对使用的空间定时压缩等。

  存储空间占用不断增大

  数据库中被删除数据的空间不会自动被释放,需要通过repair或compact操作回收。repair操作针对整个数据库,需要停机,否则可能造成数据丢失,compact操作针对单个collection压缩。

  在启动数据库时可以选择noprealloc参数,禁止数据库预分配空间,但会影响到插入效率。也可以设置每次预分配空间的大小,这样可以一定程度减小mongodb对空间的占用,当数据量增大后效果会变的不明显。

  journal文件很大

  journal文件夹下有几个文件不会自动删除,会不断变大。在未进行操作时journal文件也会占用4G空间。启动时可以通过nojournal参数禁用某些节点的journal功能。考虑使用日志轮询来处理journal文件占用空间过大问题。
  
以前使用的时候做的笔记摘抄了一点,时间有些久远,你可以顺着我提供的两个函数,主要是compact,可以不关机压缩,还不错,还有对日志轮询,从这两个角度考虑解决

MongoDB repairDatabase 释放磁盘空间

repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法。
repairDatabase is the appropriate and the only way to reclaim disk space.
 
虽然可以用 db.repairDatabase()修复数据。但这种方法有两个不好的地方。1.在生产上操作如果意外停止可能会造成数据无法恢复的危险。2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了 db.repairDatabase()的。
 
注意,repairDatabase操作所需要磁盘的空余空间为当前数据总量再加上2G。如果当前磁盘分区空间不足,可以尝试用 –repairpath 参数指定一个空间足够的分区路径。

原文链接:https://blog.csdn.net/weixin_40238625/article/details/78992432

以上是关于mongodb 磁盘空间啥时候释放的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB repairDatabase 释放磁盘空间

MongoDB释放磁盘空间

MongoDB如何释放空闲空间?

在 MacOS/APFS 上使用 Dropbox 智能同步释放磁盘空间的延迟 - 潜伏着啥危险?

DB2 删除表后如何释放相应磁盘空间

安装显示freeupdiskspace啥意思