因此,我有一个生产切分的MongoDB集群,其中有8个由mongos管理的碎片(复制集)。假设我有20个服务器正在运行我的应用程序,每个服务器运行一个mongos进程来管理8个碎片。
在这种设置下,当我在20个服务器上检查我的每个mongos上的操作数时,我可以看到我的插入和删除的数量是成比例的--这与我的应用程序逻辑是一致的。但是,当我在各个碎片上运行mongostat --discover时,我发现删除的数量几乎是插入数的4倍,这违反了我的应用程序逻辑以及mongos指示的1:1比率。直截了当的直觉支持mongos只写一个碎片,因此各个碎片之间插入和删除的平均比率应该与mongos (应用程序直接写入的)上的平均比率相同,除非mongos在内部对碎片做了一些不同的事情。
有人能告诉我为什么会发生这种情况吗?或者让我知道,如果我的下半部可能出了什么问题?
谢谢
发布于 2015-05-04 11:07:21
原因是我在没有指定我的切分键的情况下运行了对mongos的remove()查询。在这种情况下,mongos不知道将查询定向到哪个碎片,因此将查询广播到所有碎片,从而有效地执行比目标查询更多的删除操作。
有关更多信息,请查看文档。
https://stackoverflow.com/questions/30026956
复制相似问题