我理解MongoDB查询计划中的COLLSCAN
是什么 - 没有可用的索引,所以Mongo必须扫描整个集合。
显然这会导致相关查询的执行时间更长,但我想知道的是,是否会导致其他任何可能影响性能的事情?增加内存使用量?当它扫描整个表时,是否可以将需要在内存中的其他数据推出内存?
我在this MongoDB documentation page上发现了COLLSCAN
的提及,但它没有详细说明会发生什么或可能产生的后果。任何人都可以向COLLSCAN
解释(或指向我所使用的资源)可能发生的其他问题吗?
答案 0 :(得分:4)
在繁忙的系统上,这会影响性能,因为需要从磁盘读取数据,在页面(内存)中分配 - 这可能会激活交换过程。
取决于系统内存和磁盘性能的数量 - 如果它可以被缓存或读取不会阻止其他I / O操作,则不会出现这种情况。
如果COLLSCAN发生在应用程序主集合上 - 如果没有可用的RAM,其他数据将被释放或推送到交换。
COLLSCAN可能在聚合框架管道执行期间发生在索引字段上 - 当管道请求在执行阶段无法使用索引时。