如何在ClickHouse中为维度表设计分区键?

就我而言,我需要将一些维度表加载到ClickHouse中以与事实表连接。

例如,要结合订单(事实)表的买方(维度)表:

select 
  order.id,buyer.name
from order 
left join buyer
on order.buyer_id = buyer.id

通常,我将创建一个engine = Join表。但是我的某些维度表太大,无法容纳在RAM中,因此我选择MergeTree引擎作为解决方案。 我们知道,ClickHouse会自动切断在查询中指定了分区键的分区数据,并使用稀疏索引快速定位数据。

我的问题是

  1. 如何为MergeTree引擎维度表选择分区键?
    • 我应该将哈希的id用作分区键,还是用作维表的 通常会使用id键吗?
  2. 建议每个分区有多少个标记(部分)?
    • 由于建议使用8192的粒度,因此我可以设置诸如modulo(id,10)之类的分区规则,以控制分区数和分区中的部件数。 但是如何设置分区数与分区数之比,更有利于数据压缩,提高查询速度呢? 模(id,10)分区方式是否会破坏数据一致性和数据压缩?
  3. 或者,我应该避免在ClickHouse中创建维度表,而是创建一个严格满足要求的宽表吗?
yaojinzhang 回答:如何在ClickHouse中为维度表设计分区键?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3104995.html

大家都在问