首页 > 解决方案 > ClickHouse:如何从具有不同分区键的表中移动数据?

问题描述

我计划在 ClickHouse 中重新设计表,以避免在使用 ReplicatedReplacingMergeTree 时出现一些性能和重复数据删除/版本控制问题。在这里,可以运行 OPTIMIZE FINAL 来删除重复项,但不能连续运行。

因此,我们计划保留一个每天分区的表 A,其中包含传入的数据。然后是一个按月分区的表 B,用于存储历史数据。查询将被定向到包含两者的 MERGE 表(不是 MergeTree)。

然后,我们设置了一个动作,在每天结束后将最新的分区从 A 移动到 B。

但是,移动分区就像在MOVE PARTITION TO TABLE中指出“两个表必须具有相同的分区键。”一样,这是不可能的。一种方法是将数据从 A 的日常分区复制到 B,然后分离/删除 A 中的日常分区。但是与此同时,我们会看到重复。

以最小的影响将此数据从 A 传输到 B 的最佳方法是什么?还有什么其他选择?

标签: clickhouse

解决方案


一种方法是将数据从 A 的日常分区复制到 B,然后分离/删除 A 中的日常分区。但是与此同时,我们会看到重复。

您可以将数据复制到中间/临时表 TB(与 B 相同的结构/分区)。然后在 A 中删除分区,然后从 TB 移动到 B


推荐阅读