Clickhouse 内存问题

问题描述

我有一个包含大约 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(官方构建) )

解决方法

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。
,

对我来说,有效的是将最大服务器内存使用量从 0.9 更改为 1.2。

1.2 --> config.xml

感谢您的回复,因为它最终让我做到了这一点。