**Describe the situation**

```
SELECT * FROM test.hits INTO OUTFILE 'dump.csv' FORMAT CSV

8873898 rows in set. Elapsed: 32.487 sec. Processed 8.87 million rows, 8.46 GB (273.15 thousand rows/s., 260.42 MB/s.)
```

is bounded by single CPU core. Too slow :(
return true;
        case Protocol::Server::Totals:
            
                onTotals(packet.block, parsed_query
            return true;
        case Protocol::Server::Extremes:
            
                onExtremes(packet.block, parsed_query
            return true;
        case Protocol::Server::Exception:
            onReceiveExceptionFromServer(std::move(packet.exception)
            return false;
        case Protocol::Server::Log:
            onLogData(packet.block
            return true;
        case Protocol::Server::EndOfStream:
            onEndOfStream(
            return false;
        case Protocol::Server::ProfileEvents:
            onProfileEvents(packet.block
            return true;
        default:
            throw Exception(
                ErrorCodes::UNKNOWN_PACKET_FROM_SERVER, "Unknown packet {} from server {}", packet.type, connection->getDescription()
    }
}
void ClientBase::onProgress(const Progress & value)
{
    if (!progress_indication.updateProgress(value))
    {