diff --git a/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp b/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp index d2ed6dddc515..9936e7b5b734 100644 --- a/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp +++ b/ydb/core/tx/columnshard/engines/changes/general_compaction.cpp @@ -238,7 +238,8 @@ std::shared_ptr TGeneralCo ui64 TGeneralCompactColumnEngineChanges::TMemoryPredictorChunkedPolicy::AddPortion(const TPortionInfo::TConstPtr& portionInfo) { SumMemoryFix += portionInfo->GetRecordsCount() * (2 * sizeof(ui64) + sizeof(ui32) + sizeof(ui16)) + portionInfo->GetTotalBlobBytes(); - return SumMemoryFix + ((ui64)500 << 20); + SumMemoryRaw += portionInfo->GetTotalRawBytes(); + return SumMemoryFix + std::min(SumMemoryRaw, ((ui64)500 << 20)); } } // namespace NKikimr::NOlap::NCompaction diff --git a/ydb/core/tx/columnshard/engines/changes/general_compaction.h b/ydb/core/tx/columnshard/engines/changes/general_compaction.h index ee20088f0e39..a895ac795996 100644 --- a/ydb/core/tx/columnshard/engines/changes/general_compaction.h +++ b/ydb/core/tx/columnshard/engines/changes/general_compaction.h @@ -50,6 +50,7 @@ class TGeneralCompactColumnEngineChanges: public TCompactColumnEngineChanges { class TMemoryPredictorChunkedPolicy: public IMemoryPredictor { private: ui64 SumMemoryFix = 0; + ui64 SumMemoryRaw = 0; public: virtual ui64 AddPortion(const TPortionInfo::TConstPtr& portionInfo) override; };