Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-比较分片与无分片之间的查询速度_Mongodb - Fatal编程技术网

MongoDB-比较分片与无分片之间的查询速度

MongoDB-比较分片与无分片之间的查询速度,mongodb,Mongodb,我有两个名为user和user\u no\u shard的集合 用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档 用户\u no \u碎片集合包含位于碎片0中的100万个文档 我对这些集合使用“查找”命令。查找用户集合的所有文档需要6分钟,查找用户无碎片集合的所有文档需要3分钟 理论上,两个查询的时间是相等的。但这并不等同 请帮忙解释 用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档。这意味着用户集合中总共存在200万个

我有两个名为user和user\u no\u shard的集合

用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档

用户\u no \u碎片集合包含位于碎片0中的100万个文档

我对这些集合使用“查找”命令。查找用户集合的所有文档需要6分钟,查找用户无碎片集合的所有文档需要3分钟

理论上,两个查询的时间是相等的。但这并不等同


请帮忙解释

用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档。这意味着用户集合中总共存在200万个文档,而用户无切分集合中只有100万个文档。在这种情况下进行比较是不合适的

在user_no_shard collection中有200万个文档,与user collection进行比较是合适的


在适当配置分片后,mongodb选择适当的分片进行集合扫描,跳过要扫描的文档的一半。

两个集合是否具有相同的索引?使用
db.user.getIndexes()
查找它。另外,在执行查询时,请查看
explain
函数,即:
db.collections.find({}).explain()
。您将看到mongo是如何执行查询的,它是否使用索引以及如何执行和执行更多:请参阅:您的意思是mongo顺序扫描碎片,而不是并发扫描?那么集合文档的划分并没有提高查询速度?