Mongo Shell 查询优化

Mongo Shell 查询优化

参考文章

评估查询性能

  • db.collection.expalin("executionStats")提供了关于查询的性能统计信息,这些信息可用于衡量查询是否以及如何使用索引。

  • db.getCollection("aat_machine_defective_rate_config").find({}).explain("executionStats"),在mongo shell执行上述命令后返回了对查询语句的分析,如下:

    返回的结果:

    {
    	"queryPlanner" : {
    		"mongosPlannerVersion" : 1,
    		"winningPlan" : {
    			"stage" : "SINGLE_SHARD",
    			"shards" : [
    				{
    					"shardName" : "data_set2",
    					"connectionString" : "shard2/192.168.xx:27001",
    					"serverInfo" : {
    						"host" : "mongo3",
    						"port" : 27002,
    						"version" : "4.0.2",
    						"gitVersion" : "fc1573ba18aee42f97a3bb13b67af7d837826b47"
    					},
    					"plannerVersion" : 1,
    					"namespace" : "xx.xxxxxx",
    					"indexFilterSet" : false,
    					"parsedQuery" : {
    						
    					},
    					"winningPlan" : {
    						"stage" : "COLLSCAN",
    						"direction" : "forward"
    					},
    					"rejectedPlans" : [ ]
    				}
    			]
    		}
    	},
    	"executionStats" : {
    		"nReturned" : 3,
    		"executionTimeMillis" : 0,
    		"totalKeysExamined" : 0,
    		"totalDocsExamined" : 3,
    		"executionStages" : {
    			"stage" : "SINGLE_SHARD",
    			"nReturned" : 3,
    			"executionTimeMillis" : 0,
    			"totalKeysExamined" : 0,
    			"totalDocsExamined" : 3,
    			"totalChildMillis" : NumberLong(0),
    			"shards" : [
    				{
    					"shardName" : "data_set2",
    					"executionSuccess" : true,
    					"executionStages" : {
    						"stage" : "COLLSCAN",
    						"nReturned" : 3,
    						"executionTimeMillisEstimate" : 0,
    						"works" : 5,
    						"advanced" : 3,
    						"needTime" : 1,
    						"needYield" : 0,
    						"saveState" : 0,
    						"restoreState" : 0,
    						"isEOF" : 1,
    						"invalidates" : 0,
    						"direction" : "forward",
    						"docsExamined" : 3
    					}
    				}
    			]
    		}
    	},
    	"ok" : 1,
    	"operationTime" : Timestamp(1649919959, 1),
    	"$clusterTime" : {
    		"clusterTime" : Timestamp(1649919959, 6),
    		"signature" : {
    			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
    			"keyId" : NumberLong(0)
    		}
    	}
    }
    
    • COLLSCAN表示收集扫描,收集扫描表明mongod必须逐个文档扫描整个收集文档以识别结果,可能导致查询缓慢
    • executionStats.nReturned表示查询匹配并返回的文档数目;
    • executionStats.totalKeysExamined为0 ,表示这个查询没有用到索引;
    • executionStats.totalDocsExamined表示mongod总共扫描的文档个数,即检查的文档数目;

    返回文档数目和检查的文档数目之间的差异可能表明,为了提高查询效率,查询可能会受益于索引的使用。

查询与索引

  • 原文这里是通过对上一段查询条件字段创建索引,实现在有索引和没有索引的情况下,查询情况的对比。

比较索引的性能

  • 比较索引的性能可以通过hint()explain()方法的联合使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值