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

Enable CachedPlanStage replanning by default in 3.0

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.0.7
    • Component/s: Querying
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Backport Completed:
    • Sprint:
      QuInt 8 08/28/15
    • Case:

      Description

      Issue Status as of Aug 26, 2015

      ISSUE SUMMARY
      The query optimizer caches plans for each query shape and reuses these plans for a time. In situations where the performance of the cached plan is poor for a particular instance of the query shape, the optimizer may select a plan with poor performance and fail to evict the cache entry. This behavior may impact deployments where two queries with the same shape have different performance characteristics (generally due to a difference in selectivity).

      SERVER-15225 makes the query planner evaluate the cost of the cached query plan, and if the cost of this plan is too high, the query planner switches to a more efficient plan. This more efficient plan is then cached for future use.

      This ticket enables the optimization from SERVER-15225 by default.

      To disable this behavior users can set internalQueryCacheReplanningEnabled parameter to false using the setParameter command on a running system, or at start time using the setParameter commandline option or setParameter in the configuration file.

      For example, to disable using setParameter:

      db.runCommand({setParameter: 1, internalQueryCacheReplanningEnabled: false})
      

      This improvement can be re-enabled as follows:

      db.runCommand({setParameter: 1, internalQueryCacheReplanningEnabled: true})
      

      See SERVER-15225 for additional details.

      Original description

      SERVER-15225 introduced aggressive plan cache eviction and replanning which can solve a large class of query plan selection problems. This change was backported to the 3.0 branch, first available in 3.0.4, but is disabled by default. We should flip the default so that the plan cache eviction and replanning is available by default.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: