**Describe the bug**
```
| | | | | | | | | 5    0x000000000e3a5ec1 in DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool, DB::ReadBuffer*) ()
| | | | | | | | | | 2    0x000000000e3aadc6 in DB::logQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context const&, bool) ()
| | | | | | | | | | | 2    0x000000000887a195 in DB::OwnSplitChannel::log(Poco::Message const&) ()
| | | | | | | | | | | | 2    0x000000000887a7fa in DB::OwnSplitChannel::logSplit(Poco::Message const&) ()
| | | | | | | | | | | | | 2    0x000000000887acb6 in DB::SystemLog<DB::TextLogElement>::add(DB::TextLogElement const&) ()
| | | | | | | | | | | | | | 1    0x0000000011976246 in std::__1::mutex::lock() ()
| | | | | | | | | | | | | | | 1    0x00000000087495a1 in pthread_mutex_lock ()
| | | | | | | | | | | | | | | | 1    0x00007f074da790a3 in __GI___pthread_mutex_lock at ../nptl/pthread_mutex_lock.c:80
| | | | | | | | | | | | | | | | | 1    __lll_lock_wait at lowlevellock.c:52
| | | | | | | | | | | | | 2    0x000000000887ae28 in DB::SystemLog<DB::TextLogElement>::add(DB::TextLogElement const&) ()
| | | | | | | | | | | | | | 1    0x000000000887c62c in void std::__1::vector<DB::TextLogElement, std::__1::allocator<DB::TextLogElement> >::__push_back_slow_path<DB::TextLogElement const&>(DB::TextLogElement const&) ()
| | | | | | | | | | | | | | | 1    0x00000000087156fb in operator new(unsigned long) ()
| | | | | | | | | | | | | | | | 1    0x0000000008727744 in MemoryTracker::alloc(long) ()
| | | | | | | | | | | | | | | | | 1    0x000000000872727c in MemoryTracker::logMemoryUsage(long) const ()
| | | | | | | | | | | | | | | | | | 1    0x000000000887a195 in DB::OwnSplitChannel::log(Poco::Message const&) ()
| | | | | | | | | | | | | | | | | | | 1    0x000000000887a7fa in DB::OwnSplitChannel::logSplit(Poco::Message const&) ()
| | | | | | | | | | | | | | | | | | | | 1    0x000000000887acb6 in DB::SystemLog<DB::TextLogElement>::add(DB::TextLogElement const&) ()
| | | | | | | | | | | | | | | | | | | | | 1    0x0000000011976246 in std::__1::mutex::lock() ()
| | | | | | | | | | | | | | | | | | | | | | 1    0x00000000087495a1 in pthread_mutex_lock ()
| | | | | | | | | | | | | | | | | | | | | | | 1    0x00007f074da790a3 in __GI___pthread_mutex_lock at ../nptl/pthread_mutex_lock.c:80
| | | | | | | | | | | | | | | | | | | | | | | | 1    __lll_lock_wait at lowlevellock.c:52
```

**How to reproduce**
```
clickhouse-benchmark -i 1000000 -c16 --secure --query "SELECT 1"
```
{
        tryLogCurrentException(__PRETTY_FUNCTION__);
    }
    {
        std::lock_guard lock(mutex);
        flushed_before = to_flush_end;
        is_force_prepare_tables = false;
        flush_event.notify_all();
    }
    LOG_TRACE(log, "Flushed system log");
}
template <typename LogElement>
void SystemLog<LogElement>::prepareTable()
{
    String description = table_id.getNameForLogs();
    table = DatabaseCatalog::instance().tryGetTable(table_id, context);
    if (table)
    {
        auto metadata_snapshot = table->getInMemoryMetadataPtr();
        const Block expected = LogElement::createBlock();
        const Block actual = metadata_snapshot->getSampleBlockNonMaterialized();
        if (!blocksHaveEqualStructure(actual, expected))
        {
            
            int suffix = 0;
            while (DatabaseCatalog::instance().isTableExist({table_id.database_name, table_id.table_name + "_" + toString(suffix)}, context))
                ++suffix;
            auto rename = std::make_shared<ASTRenameQuery>();
            ASTRenameQuery::Table from;
            from.database = table_id.database_name;