标题是说一切。假设您有一个分片的MongoDB环境,并且用户提供了一个不包含分片键的查询。查询的实际性能是什么?背景会发生什么?
答案 0 :(得分:1)
性能取决于任意数量的因素,但是,在这种情况下,MongoDB的默认操作是执行全局分散和收集操作,从而将查询发送到所有分片,然后合并重复项以获得最终结果。
回到性能,它通常取决于每个分片上的索引以及它们数据集的隔离优化以及它们保存的数据集范围。
然而,分片中的处理是并行的,这意味着它们都会得到查询,而“master”mongod
只会在它们进入时合并,因此性能不应该是:转到分片1,得到它,碎片2;相反应该是:转到所有分片,每个分片返回其结果,主分组合并并返回。
这是一个很好的演示文稿(包括很好的图片),以确定在特定情况下如何使用分片查询:http://www.slideshare.net/mongodb/how-queries-work-with-sharding
答案 1 :(得分:0)
如果在分片集合上进行查询,则查询将在所有分片上生成,如果查询是在非共享集合上进行的,则mongoDB会获取同一分片上的所有数据。
我在MongoDB上添加了分片常见问题解答链接