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

Include scores calculated by PlanRanker in explain "queryPlanner" output and/or "allPlansExecution"

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major - P3
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Backlog
    • Component/s: Querying
    • Labels:

      Description

      One important use case for explain is determining why the system chose one candidate plan as the winner and rejected others. This information can currently derived from "allPlansExecution" output, but this requires some internal knowledge of how the PlanRanker's score calculation is implemented. Our internal Query Doctor tool, for example, calculates these scores itself (Christopher Harris please correct me if this wrong). There is a risk that Query Doctor could end up diverging from the server's behavior with regards to plan score calculation, thereby misinterpreting the explain output.

      We should consider simplifying the situation by simply exposing the plan scores. These could be exposed alongside the "winningPlan" and each "rejectedPlan", as well as alongside each plan in the "allPlansExecution" section. Although these scores are very much subject to change (or even go away entirely) as the internals of the query optimization subsystem change, I don't see a harm in exposing them. This is especially true given that explain's output format is excluded from the stable API, and is subject to change as the implementation details of the query system change.

        Attachments

          Activity

            People

            Assignee:
            backlog-query-optimization Backlog - Query Optimization
            Reporter:
            david.storch David Storch
            Participants:
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated: