From 96f2ef3d9925aff186cc148fba5501101e073983 Mon Sep 17 00:00:00 2001 From: Pxl Date: Thu, 30 Nov 2023 17:01:51 +0800 Subject: [PATCH] =?UTF-8?q?[Improvement](schema-change)=20Reserve=20some?= =?UTF-8?q?=20memory=20for=20use=20by=20other=20parts=20except=20hold=20bl?= =?UTF-8?q?ock=20of=20schem=E2=80=A6=20(#27800)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reserve some memory for use by other parts except hold block of schema change job --- be/src/olap/schema_change.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/be/src/olap/schema_change.cpp b/be/src/olap/schema_change.cpp index 40cf4f9f88..8d96f68bb6 100644 --- a/be/src/olap/schema_change.cpp +++ b/be/src/olap/schema_change.cpp @@ -555,7 +555,11 @@ Status VSchemaChangeWithSorting::_inner_process(RowsetReaderSharedPtr rowset_rea } RETURN_IF_ERROR(_changer.change_block(ref_block.get(), new_block.get())); - if (_mem_tracker->consumption() + new_block->allocated_bytes() > _memory_limitation) { + + constexpr double HOLD_BLOCK_MEMORY_RATE = + 0.66; // Reserve some memory for use by other parts of this job + if (_mem_tracker->consumption() + new_block->allocated_bytes() > _memory_limitation || + _mem_tracker->consumption() > _memory_limitation * HOLD_BLOCK_MEMORY_RATE) { RETURN_IF_ERROR(create_rowset()); if (_mem_tracker->consumption() + new_block->allocated_bytes() > _memory_limitation) {