【问题标题】:MongoDB - Deleting 1 million records taking very high timeMongoDB - 删除 100 万条记录需要很长时间
【发布时间】:2023-03-11 08:57:01
【问题描述】:

我收集了超过 1000 万条记录。其中我必须删除 100 万条记录。 我在查询过滤器中使用索引字段。

以下查询需要 150 多秒才能删除 100 万条记录。如何优化以下查询以缩短响应时间。

db.CollectionData.bulkWrite([{ deleteMany: { "filter": { "client_id": "8", "collection_id": "156643", "version": {"$lt": 7}}}}]);

在此先感谢 :)

【问题讨论】:

  • 每秒7k条记录的删除速度真的特别慢吗?
  • 这是一次运行,还是可能重复的持续过程?如果这是一个重复过程,您可能会考虑更改存储数据的方式以解决此用例。如果您想以任何特定的规律重复此过程,您可以以将要大量删除的数据在集合中组合和隔离的方式存储数据。在复制框架上删除集合是微不足道的,并且很容易(再次假设您有一个副本集)。但此策略基于您在预期删除数据时存储数据的方式。
  • 如果您有包含所有这 3 个字段的复合索引,我想它会很快。仅查看索引就足以找到已删除的文档。(如索引查询的覆盖范围)

标签: java mongodb mongoose mongodb-query


【解决方案1】:

您应该学习如何分析您的 MongoDB 查询。有一些方法可用于深入了解查询的性能统计信息等等。 MongoDB 文档中有一个很好的教程:https://docs.mongodb.com/manual/tutorial/analyze-query-plan/

有了这些附加信息,您应该能够确定您的问题(如果有的话)。

顺便说一句,这与Java无关......

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    相关资源
    最近更新 更多