在MongoDB中删除大型收藏的最佳方法

在MongoDB中删除大型收藏的最佳方法,mongodb,Mongodb,我有独立的MongoDB实例版本3.2。存储引擎是WiredTiger。删除大集合(>500Gb)以减少独占数据库锁定时间的最佳方法是什么?两种解决方案之间会有时差吗 从集合、删除索引、删除集合中删除所有文档 放弃收集 其他信息,可能很重要: 集合包含约200.000.000个文档 集合只有一个由\u id “\u id”看起来像{u id:{day:“2018-01-01”,key:“someuniquekeybyday”} 正确答案可能是:“下降操作不是线性的”。10Gb采集需要几秒钟

我有独立的MongoDB实例版本3.2。存储引擎是
WiredTiger
。删除大集合(>500Gb)以减少独占数据库锁定时间的最佳方法是什么?两种解决方案之间会有时差吗

  • 从集合、删除索引、删除集合中删除所有文档
  • 放弃收集
其他信息,可能很重要:

  • 集合包含约200.000.000个文档
  • 集合只有一个由
    \u id
  • “\u id”看起来像
    {u id:{day:“2018-01-01”,key:“someuniquekeybyday”}

  • 正确答案可能是:“下降操作不是线性的”。10Gb采集需要几秒钟的时间,而500Gb采集则需要完全相同的时间

    我已经多次删除1TB的收藏,这花费了几秒钟的时间


    p、 为您提供评论中未看到的新内容:您有第三个选择-在此数据库中复制其他集合,然后在应用程序中切换数据库。

    删除集合是即时的。至少以前是这样。顺便说一句,这很容易检查。我不得不删除一些5-10Gb的小集合,这需要几秒钟。我担心丢弃x100尺寸系列需要10-15分钟。我肯定不会严格回答您的问题,但我相信生产中的此类问题更像是一个长高与宽宽的问题。如果没有任何副本、分片和分发,我无法维护500GB的数据库。在多台计算机上分片数据将允许您进行一些批量更新,同时仍然提供高可用性。复制或分片与这个问题有什么关系@AlexisFacquesWell,决定按原样放弃收集。这花了将近4分钟(~300Gb)。也许这个选项很重要:directoryPerDB:true我在每一个实例上都有它。而你可能没有。不幸的是,我现在才想起它。它真的重要吗?我只是在猜测。也许他没有使用XFS文件系统,ext*处理大文件的速度较慢。也许还存在其他一些问题。从技术上讲,收集是一个文件,删除它只需3-5秒。