mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 16:50:48 +00:00
Account query memory limits and sampling for OPTIMIZE TABLE/merges
This commit is contained in:
parent
bd05d9db2f
commit
82edbfb581
@ -40,6 +40,18 @@ MergeListElement::MergeListElement(const std::string & database_, const std::str
|
||||
background_thread_memory_tracker = CurrentThread::getMemoryTracker();
|
||||
if (background_thread_memory_tracker)
|
||||
{
|
||||
/// From the query context it will be ("for thread") memory tracker with VariableContext::Thread level,
|
||||
/// which does not have any limits and sampling settings configured.
|
||||
/// And parent for this memory tracker should be ("(for query)") with VariableContext::Process level,
|
||||
/// that has limits and sampling configured.
|
||||
MemoryTracker * parent;
|
||||
if (background_thread_memory_tracker->level == VariableContext::Thread &&
|
||||
(parent = background_thread_memory_tracker->getParent()) &&
|
||||
parent != &total_memory_tracker)
|
||||
{
|
||||
background_thread_memory_tracker = parent;
|
||||
}
|
||||
|
||||
background_thread_memory_tracker_prev_parent = background_thread_memory_tracker->getParent();
|
||||
background_thread_memory_tracker->setParent(&memory_tracker);
|
||||
}
|
||||
|
@ -7,7 +7,15 @@ set max_memory_usage='200Mi';
|
||||
system stop merges data_01641;
|
||||
insert into data_01641 select number, toString(number) from numbers(toUInt64(120e6));
|
||||
|
||||
-- FIXME: this limit does not work
|
||||
set max_memory_usage='10Mi';
|
||||
-- peak:
|
||||
-- - is 21MiB if background merges already scheduled
|
||||
-- - is ~60MiB otherwise
|
||||
set max_memory_usage='80Mi';
|
||||
system start merges data_01641;
|
||||
optimize table data_01641 final;
|
||||
|
||||
-- definitely should fail
|
||||
set max_memory_usage='1Mi';
|
||||
optimize table data_01641 final; -- { serverError 241 }
|
||||
|
||||
drop table data_01641;
|
||||
|
Loading…
Reference in New Issue
Block a user