We use clickhosue version 21.12.2.17 before.It works well

But we found that after upgrade to 22.3.3, the memory of clickhouse used grow up daily .

I don't know if this is a memory overflow

here is the promethues metric 'ClickHouseMetrics_MemoryTracking'  duration last 15days

![image](https://user-images.githubusercontent.com/8294900/163744096-80270f73-becd-47ce-91b7-c6a96f13c1b6.png)

and I restarted cknode1 at 4.14 ,you can see it come down and rising again.

And here is some sql and result I have run for diagnosis。

![image](https://user-images.githubusercontent.com/8294900/163744418-251c86d8-832c-4aff-aa1a-6e565d47d196.png)

![image](https://user-images.githubusercontent.com/8294900/163744455-73813554-784a-4df6-803e-5ef49dbf1776.png)

![image](https://user-images.githubusercontent.com/8294900/163744529-50c4e359-feb7-4499-9449-0efc1c75942f.png)

![image](https://user-images.githubusercontent.com/8294900/163744587-c51e3ba3-6925-4591-b15d-bb0e0262af8c.png)

we use dict and MaterializedView . no living view.

we have tried  'system drop mark cache '  and change 'max_bytes_before_external_group_by' to '6g'.Not work

Is there anyting else  I can do?





span.attributes.push_back(Tuple{"clickhouse.thread_id", toString(thread_id)});
        opentelemetry_span_log->add(span);
    }
    finalizeQueryProfiler();
    finalizePerformanceCounters();
    
    {
        std::lock_guard guard(thread_group->mutex);
        thread_group->threads.erase(this);
    }
    performance_counters.setParent(&ProfileEvents::global_counters);
    memory_tracker.reset();
    memory_tracker.setParent(thread_group->memory_tracker.getParent());
    query_id.clear();
    query_context.reset();
    thread_trace_context.trace_id = 0;
    thread_trace_context.span_id = 0;
    thread_group.reset();
    thread_state = thread_exits ? ThreadState::Died : ThreadState::DetachedFromQuery;
#if defined(OS_LINUX)
    if (os_thread_priority)
    {
        LOG_TRACE(log, "Resetting nice");
        if (0 != setpriority(PRIO_PROCESS, thread_id, 0))
            LOG_ERROR(log, "Cannot 'setpriority' back to zero: {}", errnoToString());
        os_thread_priority = 0;
    }
#endif
}
void ThreadStatus::logToQueryThreadLog(QueryThreadLog & thread_log, const String & current_database, std::chrono::time_point<std::chrono::system_clock> now)