ali*_*ali 2 sharding clickhouse
我想了解如何在 Clickhosue 中选择分片键?clickhosue 如何选择哪个分片?\n例如,我有一个包含 3 列的表:\nuser_id、\ntimestamp、\ncity_id。
\n我应该按 user_id 还是按城市进行分片?
\n我使用 murmurHash3_64 函数。
\nmurmurHash3_64(city_id = 1) 返回:
\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80murmurHash3_64(1)\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 956517343494314387 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n当我有 3 个分片或 2 个分片时,Clickhouse 中选择分片 id 的机制是什么?
\nhttps://clickhouse.tech/docs/en/engines/table-engines/special/distributed/
首先,您需要了解为什么需要按一些有意义的列进行分片。为什么你不能使用rand()
?
通常不是用什么的问题,因为分片自然就遵循业务需求。如果您没有这样的要求,那么您应该使用rand()
.
CH采用模运算+权重。这很简单。如果您有 6 个分片,则 956517343494314387 % 6 = 5 === 分片号 5。因此具有相同 city_id 的行将被放置在同一个分片上。
因此,如果您选择 city_id 作为分片键,并且城市的分布通常不相等,因此阴影也会不相等。纽约或墨西哥等大城市的所有行都将位于一个分片中。
所以 user_id 看起来更适合作为分片键。
归档时间: |
|
查看次数: |
5717 次 |
最近记录: |