任何'throttle' Python/Mongo 函数的方法



我有一个函数,它对单个集合进行操作,递归地进行两次聚合,然后更新文档。我所有的索引都是正确的

目前我无法重构这段代码,当函数运行时,它会在Mongo上运行大约10分钟来处理数据。似乎根据集合大小而增长,每增加3k个文档平均需要60秒。这个集合可以增加到数十万个文档。(文档很小——大约10个键,每个键的值都很小。)

这个函数的结果不需要是实时的——它是预定的,所以对我来说节流是完全可以的。

问题是,有没有办法告诉mongo限制它授予操作的CPU ?或者我应该在Python中使用sleep或其他方法来解决节流问题?

递归地执行两次聚合,然后更新文档

看起来你需要考虑重新建模你的模式。MongoDB文档模式的灵活性可以优化您的流程。有关更多信息、示例和模式,请参阅MongoDB:数据建模。

问题是,有没有办法告诉mongo限制它授予操作的CPU ?

MongoDB没有限制每次操作CPU使用的特性。这个特性在分布式方式下可能没有意义。例如,对于跨越多个分片的操作,限制为1个CPU可能不再那么简单/理想了。

或者,根据您的用例,如果函数不必是实时的,您可以使用次要读优先级。从本质上讲,将计划的报告定向到次要成员,从而允许主要成员处理其他数据。

尽管确保你事先阅读了这个二次阅读的利弊。

参见MongoDB Replication

最新更新