Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-11959

Docs for SERVER-36527: Include queryHash in explain output

      ----------------------------

      Original Description

      Description:

      We may wish to document the new queryPlanner.queryHash field in our pages about explain output:

      https://docs.mongodb.com/manual/reference/explain-results/

      All queries with the same hash are considered the same "shape", and use the same plan cache entry. This may be useful for diagnosing issues around query performance. Please ask Storch for more details, and to review any proposed documentation changes.

      Note that https://jira.mongodb.org/browse/SERVER-35981 added this same 'queryHash' to the plan cache introspection commands output, and https://jira.mongodb.org/browse/SERVER-23332 added it to the slow query logs and system.profile output.

      Engineering Ticket Description:

      In SERVER-35981 and /SERVER-35982 we have added queryHash to various query debug mechanisms, an 8 character hex string representing a 32 bit unsigned hash value. This hash can identify instances of queries that the system considers of the shape, and thus share the same plan cache entry. The intention is that this hash will help to correlate events related to the same plan cache entry, which is important for diagnosing query performance issues in which the plan cache is involved.

      This ticket also tracks the work to add queryHash to the queryPlanner section of explain output. For instance, the output could look something like this for a simple query:

      MongoDB Enterprise > db.c.find({a: 2}).explain()
      {
      	"queryPlanner" : {
      		"plannerVersion" : 1,
      		"namespace" : "test.c",
      		"indexFilterSet" : false,
      		"parsedQuery" : {
      			"a" : {
      				"$eq" : 2
      			}
      		},
      		"queryHash" : "100FCEBA", // THIS IS NEW!
      		"winningPlan" : {
      			"stage" : "FETCH",
      			"inputStage" : {
      				"stage" : "IXSCAN",
      				"keyPattern" : {
      					"a" : 1
      				},
      				"indexName" : "a_1",
      				"isMultiKey" : false,
      				"multiKeyPaths" : {
      					"a" : [ ]
      				},
      				"isUnique" : false,
      				"isSparse" : false,
      				"isPartial" : false,
      				"indexVersion" : 2,
      				"direction" : "forward",
      				"indexBounds" : {
      					"a" : [
      						"[2.0, 2.0]"
      					]
      				}
      			}
      		},
      		"rejectedPlans" : [ ]
      	},
      	"serverInfo" : {
      		"host" : "storchbox",
      		"port" : 27017,
      		"version" : "0.0.0",
      		"gitVersion" : "unknown"
      	},
      	"ok" : 1
      }
      

      ----------------------------

      Description

      Scope of changes (files that need work and how much)

      • reference/explain-results
      • tutorial/analyze-query-plan (this page is more index v no-index and which index is better)
      • core/query-plans
      • core/query-optimization (this page is more create indexes that support queries and use selective queries and what's a covered query)
      • tutorial/evaluate-operation-performance
      • 4.2

      skipping the specific explain command/methods pages since we don't go into output on those pages. But could think about a small changelog on those pages regarding changes.

      Impact to other docs outside of this product

      MVP (work and date?)

      Resources (e.g. Scope Docs, Invision)

            Assignee:
            kay.kim@mongodb.com Kay Kim (Inactive)
            Reporter:
            kay.kim@mongodb.com Kay Kim (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              5 years, 12 weeks, 6 days ago