0

标题说明了一切。假设您有一个分片的 MongoDB 环境,并且用户提供了一个不包含分片键的查询。查询的实际性能如何?后台发生了什么?

4

2 回答 2

1

性能取决于许多因素,但是,在这种情况下,MongoDB 的默认操作是执行全局分散和收集操作,它将查询发送到所有分片,然后合并重复项以提供最终结果。

回到性能,它通常取决于每个分片上的索引和它们的数据集的独立优化以及它们持有的数据集的范围。

然而,处理在分片中是并行的,这意味着它们都得到查询,并且“主”mongod将在它们进入时合并,所以性能不应该是:去分片 1,得到它,然后分片 2;相反,它应该是:转到所有分片,每个分片返回其结果,主分片合并并返回。

这是一个很好的演示文稿(带有漂亮的图片),关于在某些情况下使用分片的查询是如何工作的:http ://www.slideshare.net/mongodb/how-queries-work-with-sharding

于 2013-04-15T10:45:31.563 回答
0

如果在分片集合上进行查询,则在所有分片上进行查询,如果在非共享集合上进行查询,则 mongoDB 将所有数据放在同一个分片上。

我在 MongoDB 上添加了分片常见问题解答的链接

http://docs.mongodb.org/manual/faq/sharding/

于 2013-04-15T10:37:49.527 回答