MongoDB中COLLSCAN的后果?

时间:2016-06-13 21:30:49

标签: mongodb

我理解MongoDB查询计划中的COLLSCAN是什么 - 没有可用的索引,所以Mongo必须扫描整个集合。

显然这会导致相关查询的执行时间更长,但我想知道的是,是否会导致其他任何可能影响性能的事情?增加内存使用量?当它扫描整个表时,是否可以将需要在内存中的其他数据推出内存?

我在this MongoDB documentation page上发现了COLLSCAN的提及,但它没有详细说明会发生什么或可能产生的后果。任何人都可以向COLLSCAN解释(或指向我所使用的资源)可能发生的其他问题吗?

1 个答案:

答案 0 :(得分:4)

在繁忙的系统上,这会影响性能,因为需要从磁盘读取数据,在页面(内存)中分配 - 这可能会激活交换过程。

取决于系统内存和磁盘性能的数量 - 如果它可以被缓存或读取不会阻止其他I / O操作,则不会出现这种情况。

如果COLLSCAN发生在应用程序主集合上 - 如果没有可用的RAM,其他数据将被释放或推送到交换。

COLLSCAN可能在聚合框架管道执行期间发生在索引字段上 - 当管道请求在执行阶段无法使用索引时。