【问题标题】:How to change order of composed primary key in clickhouse efficiently如何有效地更改clickhouse中组合主键的顺序
【发布时间】:2021-03-07 06:23:09
【问题描述】:

我有一个带有架构的表

CREATE TABLE 流量 ( date 日期, val1 UInt64, 'val2' UInt64 ... ) ENGINE = ReplicatedMergeTree(date, (val1, val2), 8192);

这里的分区键是日期。我想将顺序从 (val1, val2) 更改为 (val2, val1)

我知道的唯一方法就是将此表重命名为 someting(traffic_temp),创建名称为“trafic”和排序 (val2, val1) 的表,然后将数据从 temp 复制到 traffic,然后删除 temp 表。

但是数据集很大,有没有更好的办法?

【问题讨论】:

    标签: clickhouse clickhouse-go


    【解决方案1】:

    别无他法。仅限insert select

    您可以使用clickhouse-copier,但它的作用相同insert select

    【讨论】:

    • 一个后续问题。假设我的表以时尚 Order(val1, val2, val3) 现在我的大多数选择查询在以上述方式提供键时工作(对于 90% 的用例,这是完美的),但对于其他 10% 的情况用户没有启动键(val1)的值并且正在提供 val3。所以性能显然很差,但是假设我是否也想在不改变架构的情况下满足这一点?有没有可能???我想在某种程度上满足这两种情况,并为第二个用例提供更好的性能。
    • val3 的基数相对较高(大约 20k-40k )这就是为什么它在模式排序中保持在最后。
    • 但是我可以让第二个用例的性能更好一点吗!
    • 您可以尝试跳过 val3 的索引。有时(非常罕见)跳过索引会有所帮助。在这种情况下,我使用附加表来模拟倒排索引。
    • 我尝试跳过索引,是的,性能方面我没有看到任何收益,但处理的行数几乎减少了一半,我相信这有助于减少 IO 和 cpu 消耗对吗??
    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2018-08-30
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2022-12-20
    • 2021-12-23
    相关资源
    最近更新 更多