【问题标题】:When should I change the index_granularity in Clickhouse?我什么时候应该更改 Clickhouse 中的 index_granularity?
【发布时间】:2022-12-18 09:28:33
【问题描述】:

例如,如果我有一个包含 100 亿行的表,我应该增加 index_granularity 还是减少 index_granularity? 它甚至对查询效率有影响吗?还是我们应该始终将其保留为默认值? 欢迎任何意见。谢谢。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    一般来说,您不必担心 index_granularity 并将其设置为默认值 (8192)。

    对于现代 ClickHouse index_granularity=8192 是一个目标而不是硬性规则,自适应粒度使粒度小于 8192 行,如果行很宽,则 index_granularity_bytes 定义粒度而不是 index_granularity。

    如果存储,有时需要将 index_granularity 减少到 256 或 512少数行和数据的范围很广(如 uniqStates 或 quatilesStates)(自适应粒度不适用于状态)。将 index_granularity 设置为低于 256 是没有意义的,它会浪费 RAM,并且不会提高性能,因为其他约束(压缩块大小)在这里开始发挥作用。

    有时它需要做相反的 index_granularity = 32768(或 65536),因为你需要存储 10 万亿非常窄的行并且 PRIMARYKEY 索引是超大的(因为 10 万亿 / 8192 == 非常大的数字)。通过设置 index_granularity = 32768,可以将内存使用量减少 4 倍(主键索引的使用量)。对于此用例,通常 index_granularity = 32768 不会影响查询性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2021-09-07
      • 2013-10-31
      • 2012-09-22
      • 1970-01-01
      相关资源
      最近更新 更多