Mongodb deleteMany,如何节省磁盘使用率?
我有一个相当大的集合,请参见Mongodb deleteMany,如何节省磁盘使用率?,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个相当大的集合,请参见db.action\u traces.stats()的屏幕截图。: 我运行db.action\u traces.deleteMany({“block\u time”:{“$lt”:“2018-08-15T00:00:00.000Z”})和db.action\u traces.deleteMany({“block\u time”:{“$lt”:“2018-09-01T00:00:00.000Z”}) 并得到以下结果: {“已确认”:true,“删除帐户”:515178
db.action\u traces.stats()的屏幕截图。
:
我运行db.action\u traces.deleteMany({“block\u time”:{“$lt”:“2018-08-15T00:00:00.000Z”})
和db.action\u traces.deleteMany({“block\u time”:{“$lt”:“2018-09-01T00:00:00.000Z”})
并得到以下结果:
{“已确认”:true,“删除帐户”:5151786}
{“已确认”:true,“删除帐户”:16261351}
但是当我再次运行db.action\u traces.stats()
时,我得到了以下结果“storageSize”:630196023296
。所以基本上,我删除了一大块数据,但没有保存一点。。。这怎么可能
我该怎么做才能节省一些空间?MongoDB存储文件不会缩小--相反,它们有“漏洞”,可以在您继续添加更多数据时重新使用--至少,在他们购买另一家公司/引擎之前,原始MongoDB引擎就是这样。 在任何情况下,收缩文件的唯一方法是从头开始重新创建它们。如果您以副本集的形式运行,则可以关闭节点、删除文件并恢复节点—文件将重新写入,而不会出现存储漏洞。我已经做了几年了--在走这条路之前先阅读文档。无论哪种方式,mongodb存储都不会“收缩”——我记得很多
(我刚刚再次查看了您的屏幕截图,并注意到您正在使用新的wired tiger db引擎?我的回答是指“原始”的预连线触发器行为——但在新引擎中可能也是相同的行为)MongoDB存储文件不会收缩,而是有“洞”随着您继续添加更多数据,这些数据将被重新使用——至少,在他们购买另一家公司/引擎之前,原始mongodb引擎就是这样使用的。 在任何情况下,收缩文件的唯一方法是从头开始重新创建它们。如果您以副本集的形式运行,则可以关闭节点、删除文件并恢复节点—文件将重新写入,而不会出现存储漏洞。我已经做了几年了--在走这条路之前先阅读文档。无论哪种方式,mongodb存储都不会“收缩”——我记得很多 (我刚刚再次查看了您的屏幕截图,注意到您正在使用新的wired tiger db引擎?我的回答是指“原始”的预连线触发器行为——但在新引擎中可能也是相同的行为): 在WiredTiger上,compact试图减少集合中数据和索引所需的存储空间,从而向操作系统释放不需要的磁盘空间。此操作的有效性取决于工作负载,无法恢复磁盘空间。如果已从集合中删除了大量数据,并且不打算替换该数据,则此命令非常有用 compact可能需要额外的磁盘空间才能在WiredTiger数据库上运行 所以你的收藏一定是
db.runCommand ( { compact: 'action_traces' } )
:
在WiredTiger上,compact试图减少集合中数据和索引所需的存储空间,从而向操作系统释放不需要的磁盘空间。此操作的有效性取决于工作负载,无法恢复磁盘空间。如果已从集合中删除了大量数据,并且不打算替换该数据,则此命令非常有用
compact可能需要额外的磁盘空间才能在WiredTiger数据库上运行
所以你的收藏一定是
db.runCommand ( { compact: 'action_traces' } )
非常感谢你的评论,所以你告诉我的是,任何新数据都应该填补漏洞,而不是扩展磁盘存储?我问这个问题是因为我的资源不足,需要谨慎(我计划迁移到另一台服务器,但为了成本效益,越晚越好。)。非常感谢你的评论,所以你告诉我的是,任何新数据都应该填补漏洞,而不是扩展磁盘存储?我这样问是因为我的资源不足,需要谨慎(我计划迁移到另一台服务器,但为了节省成本,越晚越好。)。太好了,我没有意识到这个命令非常感谢。。。我已经运行了它,但没有节省太多空间。很遗憾:(我删除了2/3的文档,但保存了5%…我想我无能为力了?对不起,我看不出在180亿个文档中删除2100万个文档的比例是2/3。对我来说只是略高于1%。太好了,我没有意识到这个命令非常感谢…我运行了它,但不幸的是,它没有节省太多空间:(我已经删除了2/3的文档,但在保存了5%之后……我想我无能为力了?对不起,我看不出在180亿个文档中删除2100万个文档的比例是2/3。这对我来说只是略高于1%。