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?





{
    QueryThreadLogElement elem;
    
    
    auto current_time = time_in_seconds(now);
    auto current_time_microseconds = time_in_microseconds(now);
    elem.event_time = current_time;
    elem.event_time_microseconds = current_time_microseconds;
    elem.query_start_time = query_start_time;
    elem.query_start_time_microseconds = query_start_time_microseconds;
    elem.query_duration_ms = (time_in_nanoseconds(now) - query_start_time_nanoseconds) / 1000000U;
    elem.read_rows = progress_in.read_rows.load(std::memory_order_relaxed);
    elem.read_bytes = progress_in.read_bytes.load(std::memory_order_relaxed);
    elem.written_rows = progress_out.written_rows.load(std::memory_order_relaxed);
    elem.written_bytes = progress_out.written_bytes.load(std::memory_order_relaxed);
    elem.memory_usage = memory_tracker.get();
    elem.peak_memory_usage = memory_tracker.getPeak();
    elem.thread_name = getThreadName();
    elem.thread_id = thread_id;
    elem.current_database = current_database;
    if (thread_group)
    {
        {
            std::lock_guard lock(thread_group->mutex);
            elem.master_thread_id = thread_group->master_thread_id;
            elem.query = thread_group->query;
            elem.normalized_query_hash = thread_group->normalized_query_hash;
        }
    }
    auto query_context_ptr = query_context.lock();