【发布时间】:2022-01-27 16:08:41
【问题描述】:
我有一个名为 order_error 的集合。其中有超过 6000 万份文件。今天我试图把它分片。我有 3 个副本集。最初,没有任何问题。平衡器在集群之间分配块。但最终,它已经开始消耗所有的 Ram 空间,并且也开始消耗所有的交换空间。现在一切都没有反应。我们不能在生产中遵循这个程序。我们需要一个更好的解决方案。如何以更好的方式进行分片? 如果有人可以帮助我,请告诉我
【问题讨论】:
-
提示增加内存?顺便说一句,在初始复制期间,您肯定会使用更多的 ram+cpu。
-
我尝试增加内存。但这并没有太大帮助。这个过程真的很慢。如何创建一个空集合,将其分片并将所有文档导出到该集合?所以它会在插入时分裂。不是吗? @SomeoneSpecial
-
你可以试试。但是 6000 万个文档,你应该给它时间.. 即使你执行 insertOne() x 6000 万次也需要很多小时。这不是即时的
-
@JithinVariyar 我认为这是您最好的选择,这取决于您的索引有多少和有多大,您可以在不到 2 小时的时间内插入 6000 万份文档。我认为您在这种方法中的实际瓶颈将是对数据进行分页,如果您有一种简单的方法,我认为这是更安全的方法。
-
也许你选择了一个糟糕的分片键。
标签: mongodb mongoose mongodb-query sharding