-
Type: Task
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
The IDHackStage that by-pass instantiating a full query executor with query planning etc requires a regular index.
Time-series bucket collections that use a clustered index thus need to use the regular path that is slower than the above.
Doing profiling during tsbs we spend around 5% here:
--5.43%--mongo::getExecutorUpdate(mongo::OpDebug*, mongo::CollectionPtr const*, mongo::ParsedUpdate*, boost::optional<mongo::explain::VerbosityEnum>, std::function<unsigned long (mongo::BSONObj const&)>&&) | |--2.97%--mongo::(anonymous namespace)::PrepareExecutionHelper<std::unique_ptr<mongo::PlanStage, std::default_delete<mongo::PlanStage> >, mongo::(anonymous namespace)::ClassicPrepareExecutionResult>::prepare() | | | --1.61%--mongo::QueryPlanner::plan(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&) | | | --1.44%--mongo::QueryPlanner::planForMultiPlanner(mongo::CanonicalQuery const&, mongo::QueryPlannerParams const&) | | | --0.72%--mongo::buildCollscanSoln(mongo::CanonicalQuery const&, bool, mongo::QueryPlannerParams const&) | --1.57%--mongo::ParsedUpdate::parseQueryToCQ() | --1.28%--mongo::CanonicalQuery::canonicalize(mongo::OperationContext*, std::unique_ptr<mongo::FindCommandRequest, std::default_delete<mongo::FindCommandRequest> >, bool, boost::intrusive_ptr<mongo::ExpressionContext> const&, mongo::ExtensionsCallback const&, unsigned long long, mongo::ProjectionPolicies const&, std::vector<std::unique_ptr<mongo::InnerPipelineStageInterface, std::default_delete<mongo::InnerPipelineStageInterface> >, std::allocator<std::unique_ptr<mongo::InnerPipelineStageInterface, std::default_delete<mongo::InnerPipelineStageInterface> > > >) | --0.77%--mongo::MatchExpressionParser::parse(mongo::BSONObj const&, boost::intrusive_ptr<mongo::ExpressionContext> const&, mongo::ExtensionsCallback const&, unsigned long long) | --0.62%--mongo::(anonymous namespace)::parse(mongo::BSONObj const&, boost::intrusive_ptr<mongo::ExpressionContext> const&, mongo::ExtensionsCallback const*, unsigned long long, mongo::DocumentParseLevel)