Clickhouse内存问题

Tho*_*ler 3 clickhouse clickhouse-client

我有一个包含大约 20 亿行的表,我尝试从中查询 max(id)。Id 不是表的排序键,并且该表使用表引擎mergeTree

无论我尝试什么,我都会遇到内存错误。这并不仅仅限于这一个查询。一旦我尝试完全(垂直)查询任何表以查找数据,我的 12 GB 内存就不够了。现在我知道我可以添加更多,但这不是重点。Clickhouse 在内存不足时会抛出错误,这是否是设计使然?是否有一个设置告诉 clickhouse 使用磁盘?

SQL错误[241]:ClickHouse异常,代码:241,主机:XXXXXX,端口:8123;代码:241,e.displayText() = DB::Exception:超出内存限制(用于查询):将使用 9.32 GiB(尝试分配 9440624 字节的块),最大值:9.31 GiB(版本 21.4.6.55(官方版本)) )

Den*_*ane 6

Alexey Milovidov 不同意将最低 RAM 要求写入 CH 文档。但我想说 32 GB 是生产 CH 的最低要求。

至少:

  • 你需要降低标记缓存,因为它是 5GB!!!!默认情况下(设置为 500MB)。
  • 您需要将 max_block_size 降低到 16384。
  • 您需要将 max_threads 降低到 2。
  • 您需要将 max_bytes_before_external_group_by 设置为 3GB。
  • 您需要将aggregation_memory_efficient_merge_threads设置为1。