`
ppxieppp
  • 浏览: 50706 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

mongodb删除集合后磁盘空间不释放

阅读更多

 

mongodb删除集合后磁盘空间不释放,只有用db.repairDatabase()去修复才能释放。

但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以,可以利用./mongod --repair --dbpath=/data/mongo/ 如果你是把数据库单独的放在一个文件夹中指定dbpath时就指向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且mongodb要有备机才可以,不然千万不要随便使用db.repairDatabase()来修复数据库,切记。

 

修复数据库的实际过程:将所有的文档导出然后马上导入,忽略那些无效的文档.完成以后,会重新建立索引.了解这一机制对理解修复的一些属性有帮助.数据量大的话,会花很多时间.因为所有数据都要验证,所有索引都要重建.修复后可能会比修复前少些文档,因为损毁的文档都被丢弃了.

 

 

MongoDB内部有预分配空间的机制,每个预分配的文件都用0进行填充,由于有了这个机制,MongoDB始终保持额外的空间和空余的数据文件,从而有效地避免了由于数据暴增而带来的磁盘压力过大的问题.

 

由于表中数据量的增加,数据文件每新分配一次,它的大小都会是上一个数据文件大小的2倍,每个数据文件最大2G.这样的机制有利于防止较小的数据库浪费过多的磁盘空间,同时又能保证较大的数据库有相应的预留空间使用.

 

修复数据库还能起到压缩数据的作用,限制的空间(比如删除体积较大的集合,或删除大量文档后腾出的空间)在修复后会被重新回收.

 

分享到:
评论

相关推荐

    MongoDB释放空闲空间的几种常用方法

    然而,当我们在MongoDB中删除文档或集合后,MongoDB不会立即释放这些已占用的磁盘空间,而是保留空记录列表供后续插入操作使用。这可能导致磁盘空间利用率低下,尤其是在频繁进行增删改操作的环境中。为了优化空间...

    mongodb 集群重构和释放磁盘空间实例详解

    在实际运营中,数据的增删改查是常态,但MongoDB在删除数据后并不会立即回收磁盘空间,这可能导致磁盘空间逐渐被浪费。本实例将详细解释如何在MongoDB集群中进行数据目录重构,以释放已被删除数据所占用的磁盘空间。...

    MongoDB的数据存储结构.docx

    当需要分配新的盘区时,MongoDB会检查$freelist命名空间,这是一个特殊的空间,用于记录已被释放(如删除的集合或索引)的盘区。如果$freelist中有合适大小的盘区,MongoDB会优先复用这些空间,以提高资源利用率。 ...

    Mongodb批量删除gridfs文件实例

    `db.repairDatabase()` 由于上述删除操作并未立即释放磁盘空间,`fs.chunks`集合中的数据块可能仍然存在。运行`repairDatabase`命令可以整理数据库,回收不再使用的空间。注意,这会锁定整个数据库,消耗大量内存和...

    OpenStack Ceilometer用MongoDB解决占用磁盘空间过大问题

    3. 数据导出再导入:通过`mongodump`和`mongorestore`工具,可以将数据导出后再导入,这个过程会重建索引并清理已删除数据的空间。这有助于释放被占用的磁盘空间。 4. 定期删除无用数据:针对Ceilometer的具体场景...

    深入了解MongoDB是如何存储数据的

    同时,如果物理内存不足,操作系统会执行交换操作(swap-out),将不常用的数据换出到磁盘,释放物理内存空间。 MongoDB的存储模型基于这种内存映射文件机制,使得数据库的读写操作只需要与虚拟内存交互,而数据的...

    MongoDB CRUD技术操作概述.pptx

    * `drop` 方法:删除集合所有的数据和索引,释放磁盘空间,例如 `db.<collection>.drop()`。 * `dropDatabase` 方法:删除数据库,释放磁盘空间,例如 `db.dropDatabase()`。 读取(Read) * `find` 方法:返回 ...

    蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式

    当Redis内存达到配置的阈值时,它会根据一定的策略删除部分数据来释放内存空间。 - **分区的原因**:通过分区可以有效地利用多台机器的内存资源,提高系统的整体吞吐量和计算能力。同时,分区还可以帮助解决单机内存...

    mongdb+GridFS文件上传

    - 文件删除不会立即释放磁盘空间,因为MongoDB会等待垃圾回收机制清理已删除的文件块。定期运行`db.fs.files.deleteMany()`和`db.fs.chunks.deleteMany()`可以手动清理。 6. 应用场景: - 大规模文件存储:适用于...

    Java笔试面试题解答

    ### Java笔试面试题解答知识点详解 ...垃圾回收机制自动管理内存,释放不再使用的对象占用的空间。 以上知识点涵盖了Java笔试面试题中的核心内容,对于准备面试的开发者来说是非常有价值的参考资料。

    数据库试题某次考试试卷及答案

    也可以是非关系型的,如MongoDB、Redis等。 2. **数据库管理系统(DBMS)**:是用于创建和管理数据库的软件。它提供了用户与物理数据库之间的接口,使得用户可以通过SQL等语言来查询和操作数据。 3. **信息系统...

Global site tag (gtag.js) - Google Analytics