Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-56483

SBE explain output for ixscan/ixseek stage should indicate which index is being read

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.1 Required
    • Component/s: None
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Sprint:
      QE 2021-10-04, QE 2021-10-18

      Description

      When an SBE plan involves in ixscan or ixseek stage, the explain output associated with that stage looks something like this:

      				"stage" : "ixseek",
      				"planNodeId" : 1,
      				"nReturned" : 3,
      				"executionTimeMillisEstimate" : 0,
      				"advances" : 3,
      				"opens" : 1,
      				"closes" : 1,
      				"saveState" : 0,
      				"restoreState" : 0,
      				"isEOF" : 1,
      				"numReads" : 3,
      				"seeks" : 1,
      				"recordSlot" : 5,
      				"recordIdSlot" : 6,
      				"snapshotIdSlot" : 3,
      				"seekKeySlotLow" : 7,
      				"seekKeySlotHigh" : 8,
      				"outputSlots" : [ ],
      				"indexKeysToInclude" : "00000000000000000000000000000000"
      

      Notably absent from this output is any indication of what the index is. We should include the index name and/or key pattern. For comparison, here is what the output from the classic engine's IXSCAN stage looks like:

      			"stage" : "IXSCAN",
      			"nReturned" : 3,
      			"executionTimeMillisEstimate" : 0,
      			"works" : 4,
      			"advanced" : 3,
      			"needTime" : 0,
      			"needYield" : 0,
      			"saveState" : 0,
      			"restoreState" : 0,
      			"isEOF" : 1,
      			"keyPattern" : {
      				"a" : 1
      			},
      			"indexName" : "a_1",
      			"isMultiKey" : false,
      			"multiKeyPaths" : {
      				"a" : [ ]
      			},
      			"isUnique" : false,
      			"isSparse" : false,
      			"isPartial" : false,
      			"indexVersion" : 2,
      			"direction" : "forward",
      			"indexBounds" : {
      				"a" : [
      					"(0.0, inf.0]"
      				]
      			},
      			"keysExamined" : 3,
      			"seeks" : 1,
      			"dupsTested" : 0,
      			"dupsDropped" : 0
      

      We should consider adding the following information to SBE explain output for ixscan/ixseek as part of this ticket:

      • Index name
      • Index key pattern
      • Index version
      • Whether the index is multikey
      • The index's multikey paths
      • Whether the index is unique
      • Whether the index is sparse
      • Whether the index is partial

        Attachments

          Activity

            People

            Assignee:
            bobby.morck Bobby Morck
            Reporter:
            david.storch David Storch
            Participants:
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: