mongodb每天上亿数据量定期清理

本文介绍了在MongoDB中处理每日上亿数据的清理方法,包括单次删除、定时任务、TTL索引、多线程分批删除、分表和分库分表等策略,以及各自的适用场景和影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:mongodb(应用运营数据分析与自动自助化支持平台)每分钟有30w~40w的insert,20w~30w的update。数据保留一天,一天之前的数据可以清理。一天的数据量大概1亿左右。由于数据量较大,清理数据对系统造成了较大影响,入库会出现堵塞。经过和开发多次讨论,尝试了不同的方案。最终选择了合适的清理方式,系统也开始比较稳定地运行。

除了这个mongodb库外,也遇到其他库询问关于mongodb如何进行数据清理问题。这里将常见的清理方法列出来供大家参考。

清理方法:

  1. 采用定期一分钟删除一次的方法。方法如下:

                        "op" : "remove",
    
                        "ns" : "fla.logGset",
    
                        "query" : {
    
                                "time" : {
    
                                        "$lt" : NumberLong(1495693140),
    
                                        "$gte" : NumberLong(1495693080)
    
                                }
    
                        },
    

对于数据量较小的表,这种方法比较合适。但是对于数据量较较大的库,删除速度太慢,跟不上入库的速度。比如mrcache这个库,单次删除执行时间需要大概10分钟~20分钟不等。这个远远追不上入库的速度。

  1. 采用晚上定期执行删除任务,删除小于某个时间的所有数据。

                        "op" : "remove",
    
                        "ns" : "fla.logGset",
    
                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值