MongoDB 删除旧数据

问题描述 投票:0回答:1

我们想要清除 Mongo 的旧记录(超过 90 天),我们有一个包含 3 个节点的副本集,每个节点上有 3.8 TB 的数据(在 /var/lib/mongodb 中)

我们想用这种方式清除旧记录


db.Clicks.deleteMany({ “callData.path”: “/info-dubai”, “callData.date”: { $lt: new Date(new Date().getTime() - (86400000 * 90)) } } );

db.Clicks.deleteMany({ “callData.path”: "/info-qatar, “callData.date”: { $lt: new Date(new Date().getTime() - (86400000 * 90)) } }) ;

完成这两个请求后,磁盘空间没有释放,我必须运行命令进行压缩


db.runCommand( { compact: ‘Clicks’ } );

compaction之后,空间被释放了,但是清理本身需要很长的时间并且I/O负载相当重,而且compaction本身也会影响性能,请告诉我,也许有一种方法可以更高效地做到这一点?更快、负载更小

mongodb
1个回答
0
投票

您是否考虑过使用TTL索引? 由于非托管写入,手册不推荐它,但如果您没有负载问题,它可能会派上用场

© www.soinside.com 2019 - 2024. All rights reserved.