Clickhouse 内存问题

标签 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 字节的 block ),最大值: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。

关于Clickhouse 内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68592186/

相关文章:

sql - Clickhouse:是否可以在SQL查询中指定OFFSET n?

pandas - Clickhouse 不返回列标题

sql - 截断并插入 ClickHouse 数据库

clickhouse - 如何在ClickHouse中获取FLAG的值

linux -/bin/sh : 1: clickhouse: Operation not permitted

Clickhouse KILL QUERY 永远挂起

database - 如何知道查询中是否检索到行 | Clickhouse 和 Golang

clickhouse - 在 Clickhouse 中上传大型 csv 时,连接被对等方重置

ubuntu - clickhouse 客户端不工作(或服务器)