我有一个对单个集合进行操作的函数,递归地执行两个聚合然后更新文档。我的所有索引都是正确的。
目前我无法重构此代码,当函数运行时,它会猛烈攻击Mongo大约10分钟来处理数据。似乎根据集合大小增长,每增加3k文档平均大约60秒。该集合可以增长到数十万个文档。 (文档很小 - 大约10个键,每个键值非常小。)
这个功能的结果不需要是实时的 - 它是预定的,所以我可以把它重新安排好。
问题是,有没有办法告诉 mongo 限制它授予操作的CPU?或者我应该使用sleep
或其他方法来解决Python中的限制问题?
答案 0 :(得分:0)
递归地进行两次聚合,然后更新文档
看起来您需要考虑重新建模您的架构。 MongoDB文档架构的灵活性可以优化您的流程。有关更多信息,示例和模式,请参阅MongoDB: Data Modeling。
问题是,有没有办法告诉mongo限制它授予操作的CPU?
MongoDB没有限制每个操作的CPU使用率的功能。此功能在分布式方式中可能没有意义。例如,跨越多个分片的操作的1个CPU的限制可能不再那么简单/期望。
或者,根据您的使用情况,如果该功能不必是实时的,您可以使用辅助read-preference。 实质上,将您的预定报告指向辅助成员,允许您的主要处理其他数据。