【问题标题】:Is it possible to move data between two distributed tables in ClickHouse是否可以在 ClickHouse 中的两个分布式表之间移动数据
【发布时间】:2022-01-22 11:42:27
【问题描述】:

我认为答案是否定的,但想在这里确认一下。 是否可以在 ClickHouse 的两个分布式表之间移动数据(复制然后删除源)? 比如说,我在所有节点中都定义了本地表 ab,并且 a_dist 定义为:

CREATE TABLE IF NOT EXISTS a_dist ON CLUSTER my_cluster_name AS a ENGINE = Distributed(my_cluster_name, default, a, rand())
CREATE TABLE IF NOT EXISTS b_dist ON CLUSTER my_cluster_name AS a ENGINE = Distributed(my_cluster_name, default, b, rand())

是否可以直接将所有数据从a_dist 移动到b_dist?还是应该将每个节点中的数据从表a 移动到表b

谢谢!

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    最简单的方法

    INSERT INTO b_dist SELECT * FROM a_dist;
    TRUNCATE default.a ON CLUSTER 'my_cluster_name';
    

    但它会在您执行此查询的节点与集群中的其他节点之间产生大量数据传输

    对于 Atomic 数据库引擎和 clickhouse 21.8+,直接在每个节点上运行会快得多

    EXCHANGE TABLES default.a AND default.b
    

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2011-11-30
      • 2017-11-06
      相关资源
      最近更新 更多