-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
-
Fully Compatible
-
QE 2024-02-19, QO 2024-03-04, QO 2024-03-18
-
2
Implement basic replanning algorithm:
When SBE plan is retrieved from cache, it will go through SBE trial run phase for us to see if replanning is needed.
Classic runtime planner tracks the number of “works” to determine a budget, but SBE tracks “reads” instead of “works”. Total number of reads, performed by a plan is equal to totalKeysExamined + totalDocsExamined stats.
SBE trial run uses TrialRunTracker to track the number of reads and, optionally, a number of documents that have reached a blocking stage.
We will set read budget for the plan to M * (totalKeysExamined + totalDocsExamined) of the winning plan after the multi-planning, where M is internalQueryCacheEvictionRatio.
We will not track the number of documents that have reached a blocking stage, which is consistent with classic runtime planner behavior.
- depends on
-
SERVER-85237 Implement classic_runtime_planner_for_sbe::CachedPlanner without replanning
- Closed
- is depended on by
-
SERVER-85239 In classic_runtime_planner_for_sbe::CachedPlanner implement replanning for aggregation pipeline pushdown
- Closed
- is related to
-
SERVER-87376 Re-enable explode_for_sort_plan.js for Classic multi-planner for SBE
- Closed
-
SERVER-87377 EOF optimization in MultiPlanner causes profile_find.js to fail due to missing replanReason
- Closed