【问题标题】:Is multi threaded delete from mongodb blocking?mongodb阻塞中的多线程删除吗?
【发布时间】:2021-02-12 23:45:06
【问题描述】:

我正在处理一项需要从 mongodb 中删除一些非常大的记录的任务。有时记录在 2M 和 3M 之间。我正在努力让它尽可能快。

我的想法是使用某种线程池并将这个数字分成大约 20 个线程,每个线程删除集合的一部分。在我进一步采用这种方法之前,我想知道这是否是一种好的(有希望的)方法。我主要担心的是,如果这在 mongo 中是不可能的,我将在 db 中出现阻塞行为,基本上线程将等待对方完成删除。

如果有人建议任何其他方法/解决方案,我也会很高兴。

项目语言为 Java/Spring。

【问题讨论】:

    标签: java mongodb spring-boot spring-mongodb


    【解决方案1】:

    在“尽可能快地”做任何事情之前,您需要了解瓶颈在哪里(通常是 CPU、内存或磁盘),这样您的更改才能真正发挥作用。

    说到删除,删除操作有一些开销(客户端必须向服务器发送命令,服务器必须解析它等等)。

    假设您有大量删除,在测量挂钟时间时,使用 2 个应用程序线程进行删除可能是减少这种开销的好主意。

    被删除的文档的大小无关紧要。

    如果您假设服务器将因文档大小而受到 I/O 限制,那么同时向其发送更多请求将毫无帮助(事实上这会适得其反)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多