在 Clickhouse 中运行非常简单的查询时超出内存限制
Posted
技术标签:
【中文标题】在 Clickhouse 中运行非常简单的查询时超出内存限制【英文标题】:Memory limit exceeded when running very simple query in Clickhouse 【发布时间】:2021-12-28 01:35:33 【问题描述】:我有一个使用ReplacingMergeTree
引擎的非常大的表(730M 行)。即使在运行微不足道的查询时,我也开始出现“超出内存限制(用于查询)”。
例如,SELECT * FROM my_table LIMIT 5
给出:
Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 24.50 GiB (attempt to allocate chunk of 26009509376 bytes), maximum: 9.31 GiB: While executing MergeTree.
为什么 Clickhouse 尝试使用 24.5G 内存进行简单的 SELECT 查询,我该如何解决?
【问题讨论】:
【参考方案1】:因为许多并行线程读取所有列和 65k 行并为每列分配数 MB。
表格有多少列?
试试
set max_block_size=512, max_threads=1, max_rows_to_read=512;
SELECT * FROM my_table LIMIT 5;
【讨论】:
以上是关于在 Clickhouse 中运行非常简单的查询时超出内存限制的主要内容,如果未能解决你的问题,请参考以下文章
在 oracle sql developer 中加入查询快,在 odp.net 中超慢
Python使用ch-orm对ClickHouse简单查询及写入
在 ClickHouse 中使用 JOINS 和检查 NULL 的 Tableau 查询失败