如何在 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 限流等