• mongodb如何删除数据并释放空间


            mongodb删除数据后不会直接释放内存空间,是因为使用了一种称为“延迟删除”的策略。这意味着当一个文档被删除时,它仍然会占用一定的内存空间,直到这个空间被垃圾回收器(Garbage Collector)回收。

            删除数据操作前建议先评估你的操作会有什么样的影响。在生产上操作的时候,需要评估你删除的数据有多大,需要用多长时间,从而可以制定相应的实施和回退方案。

    举个例子,db是busi,我要删除createDate小于2023-07-01的数据,根据这个字段查询数据量大概有多少,或者可以根据主键_id来查询。

    -- 查询数据

    db.busi.find({createDate:{$gt : '2023-07-01'}}).count();
    db.busi.find({_id:{$gt: 123456}}).count()
    db.busi.find({_id:{$lt: 123456}}).count()

    如果符合预期的操作方案,则进行后面的删除;

    注意:删除数据只能在主节点进行操作

    -- 根据日期删除数据(时间较长)
    db.busi.remove({createDate:{$gt : '2023-07-01'}})

    删除过程中也可以直接查询当前的数据量


    -- 根据条件查询当前的数据总量
    db.busi.find({_id: {$gt: 123456}}).count();
    db.busi.find({_id: {$lt: 123456}}).count();
    -- 该语句执行较长
    db.busi.find({createDate: {$lt: '2023-07-01'}}).count();

    删除完成后,我们可以观察服务器对应的数据目录,磁盘空间是没有任何变化的,则需要执行下面的命令

    注意:释放空间只是释放了当前节点的空间,如果有多个节点,还需要在多个节点进行操作


    -- 释放空间(需要几分钟)
    db.runCommand({compact: "busi", force:true});
    -- 实时查询当前空间大小
    db.busi.stats().storageSize;

  • 相关阅读:
    Springboot实现RBAC权限校验
    分享让PPT变高级的两个小技巧
    linux核心知识梳理
    代码随想录刷题记录 6 - 二叉树(1)
    小红书达人怎么对接,博主沟通流程汇总!
    css 语法笔记
    【Linux】进程(6):环境变量
    IC设计企业,如何安全、可控、高效的传输设计文档和研发数据?
    QT信号和槽的关联实现子窗口传递值给主窗口
    Git配置SSH
  • 原文地址:https://blog.csdn.net/u012868901/article/details/134194843