@@ -252,16 +252,35 @@ std::shared_ptr<TFetchingScript> TSpecialReadContext::BuildColumnsFetchingPlan(c
252
252
TSpecialReadContext::TSpecialReadContext (const std::shared_ptr<TReadContext>& commonContext)
253
253
: CommonContext(commonContext) {
254
254
255
+ ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata ());
256
+ Y_ABORT_UNLESS (ReadMetadata);
257
+ Y_ABORT_UNLESS (ReadMetadata->SelectInfo );
258
+
259
+ double kffFilter = 0.45 ;
260
+ double kffFetching = 0.45 ;
261
+ double kffMerge = 0.10 ;
262
+ TString stagePrefix;
263
+ if (ReadMetadata->GetEarlyFilterColumnIds ().size ()) {
264
+ stagePrefix = " EF" ;
265
+ kffFilter = 0.7 ;
266
+ kffFetching = 0.15 ;
267
+ kffMerge = 0.15 ;
268
+ } else {
269
+ stagePrefix = " FO" ;
270
+ kffFilter = 0.1 ;
271
+ kffFetching = 0.75 ;
272
+ kffMerge = 0.15 ;
273
+ }
274
+
255
275
std::vector<std::shared_ptr<NGroupedMemoryManager::TStageFeatures>> stages = {
256
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (" FILTER" , 0.70 * TGlobalLimits::ScanMemoryLimit),
257
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (" FETCHING" , 0.15 * TGlobalLimits::ScanMemoryLimit),
258
- NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (" MERGE" , 0.15 * TGlobalLimits::ScanMemoryLimit)
276
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (
277
+ stagePrefix + " ::FILTER" , kffFilter * TGlobalLimits::ScanMemoryLimit),
278
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (
279
+ stagePrefix + " ::FETCHING" , kffFetching * TGlobalLimits::ScanMemoryLimit),
280
+ NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures (stagePrefix + " ::MERGE" , kffMerge * TGlobalLimits::ScanMemoryLimit)
259
281
};
260
282
ProcessMemoryGuard =
261
283
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildProcessGuard (CommonContext->GetReadMetadata ()->GetTxId (), stages);
262
- ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata ());
263
- Y_ABORT_UNLESS (ReadMetadata);
264
- Y_ABORT_UNLESS (ReadMetadata->SelectInfo );
265
284
266
285
auto readSchema = ReadMetadata->GetResultSchema ();
267
286
SpecColumns = std::make_shared<TColumnsSet>(TIndexInfo::GetSnapshotColumnIdsSet (), readSchema);
0 commit comments