微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Clickhouse 需要如此多的内存来进行简单的查询?

如何解决为什么 Clickhouse 需要如此多的内存来进行简单的查询?

我有一个简单的查询,例如:

SELECT w,x,y,z FROM my_table
WHERE microsecs >= 1234 AND microsecs <= 2345 AND a='foo' AND b='bar'
ORDER BY microsecs ASC

我在表上的主键是 (a,b,microsecs)。

查询应该返回大约 2.95 亿行。我正在使用 clickhouse-driver 通过 execute_iter 流式传输数据。

尽管如此,我还是需要将 max_memory_usage 设置为大约 48GB 才能使查询成功。

为什么clickhouse 需要这么多内存来完成一个简单的查询,我该如何减少所需的内存?

解决方法

我在 clickhouse_en 电报频道和I was pointed to optimizing read in-order 上的文档中提出了这个问题。我将 ORDER BY 从 ORDER BY microsecs 更改为 ORDER BY a,b,microsecs,所需内存急剧下降。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。