|
@@ -252,16 +252,35 @@ std::shared_ptr<TFetchingScript> TSpecialReadContext::BuildColumnsFetchingPlan(c
|
|
|
TSpecialReadContext::TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext)
|
|
|
: CommonContext(commonContext) {
|
|
|
|
|
|
+ ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
|
|
|
+ Y_ABORT_UNLESS(ReadMetadata);
|
|
|
+ Y_ABORT_UNLESS(ReadMetadata->SelectInfo);
|
|
|
+
|
|
|
+ double kffFilter = 0.45;
|
|
|
+ double kffFetching = 0.45;
|
|
|
+ double kffMerge = 0.10;
|
|
|
+ TString stagePrefix;
|
|
|
+ if (ReadMetadata->GetEarlyFilterColumnIds().size()) {
|
|
|
+ stagePrefix = "EF";
|
|
|
+ kffFilter = 0.7;
|
|
|
+ kffFetching = 0.15;
|
|
|
+ kffMerge = 0.15;
|
|
|
+ } else {
|
|
|
+ stagePrefix = "FO";
|
|
|
+ kffFilter = 0.1;
|
|
|
+ kffFetching = 0.75;
|
|
|
+ kffMerge = 0.15;
|
|
|
+ }
|
|
|
+
|
|
|
std::vector<std::shared_ptr<NGroupedMemoryManager::TStageFeatures>> stages = {
|
|
|
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FILTER", 0.70 * TGlobalLimits::ScanMemoryLimit),
|
|
|
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FETCHING", 0.15 * TGlobalLimits::ScanMemoryLimit),
|
|
|
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("MERGE", 0.15 * TGlobalLimits::ScanMemoryLimit)
|
|
|
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
|
|
|
+ stagePrefix + "::FILTER", kffFilter * TGlobalLimits::ScanMemoryLimit),
|
|
|
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
|
|
|
+ stagePrefix + "::FETCHING", kffFetching * TGlobalLimits::ScanMemoryLimit),
|
|
|
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(stagePrefix + "::MERGE", kffMerge * TGlobalLimits::ScanMemoryLimit)
|
|
|
};
|
|
|
ProcessMemoryGuard =
|
|
|
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildProcessGuard(CommonContext->GetReadMetadata()->GetTxId(), stages);
|
|
|
- ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
|
|
|
- Y_ABORT_UNLESS(ReadMetadata);
|
|
|
- Y_ABORT_UNLESS(ReadMetadata->SelectInfo);
|
|
|
|
|
|
auto readSchema = ReadMetadata->GetResultSchema();
|
|
|
SpecColumns = std::make_shared<TColumnsSet>(TIndexInfo::GetSnapshotColumnIdsSet(), readSchema);
|