如何在 ClickHouse 中维护缓存?

Posted

技术标签:

【中文标题】如何在 ClickHouse 中维护缓存?【英文标题】:How to maintain cache in ClickHouse? 【发布时间】:2020-03-12 19:32:40 【问题描述】:

我使用 crontab 来安排每 2 小时查询一次大表的 SQL。

select a,b,c,d,e,f,g,h,i,j,k,many_cols from big_table format Null

每次需要 5 分钟到 30 秒。

query_log可以看出,SQL时间低时MarkCacheHits值高,时间高时MarkCacheHits值低,MarkCacheMiss值为高。

我想知道如何使标记缓存尽可能多地命中? (这可能不是唯一需要预热的大桌子)

标记缓存会被其他查询替换吗?有什么限制?

选择特定列的预热方法真的适用于这些列的聚合查询吗?比如预热SQL如上,聚合查询可以是select a,sum(if(b,c,0)) from big_table group by a

我的clickhouse服务器最近偶尔挂了,从日志看不出对应时间有任何错误或异常。这可能与我对大表的常规热身查询有关吗?

【问题讨论】:

【参考方案1】:

实际上,您将数据放入 Linux 磁盘缓存中。

标记缓存会被其他查询替换吗?它的限制是什么?

是的,将被替换,5GB <mark_cache_size>5368709120</mark_cache_size>

选择特定列的预热方法真的适用于这些列的聚合查询吗?

是的,因为您将文件放入 Linux 缓存中。

这可能与我对大表的常规热身查询有关吗?

没有。

【讨论】:

非常感谢!高并发查询(几十个)会导致死锁吗? 不应该。打开一个新问题github.com/ClickHouse/ClickHouse/issues,其中包含完整描述和重现步骤

以上是关于如何在 ClickHouse 中维护缓存?的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法初始化类 ru.yandex.clickhouse.ClickHouseUtil

如何在 clickhouse 中使用 groupBitmapAnd 和 AggregatingMergeTree 引擎?

ClickHouse 创建用户/角色/行权限策略/配额 Quota 限流等

Flink SQL实战演练之自定义Clickhouse Connector

Clickhouse优点 缺点 / Doris 优点 缺点

Clickhouse优点 缺点 / Doris 优点 缺点