【问题标题】:Clickhouse. Optimize table on cluster doesnt work properly点击屋。优化集群上的表无法正常工作
【发布时间】:2020-03-21 19:23:02
【问题描述】:

我有一个带有复制分区表的 2x2 v19.15.2.2 集群。

select * from system.parts 

=> some_part_0_0_1, some_part_0_0_2 and etc.

显示一些未合并的部分。

Doc says,在调用optimize的过程中,所有的部分都会被合并,但是在调用这样的查询之后

// current settings on each node 
optimize_throw_if_noop = 1 
replication_alter_partitions_sync = 2 

optimize table my_table on cluster my_cluster partition my_partition final

它只是多生成一个部分,旧部分不会合并。

我做错了什么?谢谢

【问题讨论】:

    标签: sql database replication ddl clickhouse


    【解决方案1】:

    select * from system.parts WHERE active

    合并过程(由优化启动)将几个旧的(活动)部分合并为一个新的活动部分。旧部分(合并)变为非活动状态,将在 8 分钟后移除(保留 8 分钟,因为 CH 出于性能原因不使用 fsync)。

    【讨论】:

    • 如果四个副本中的一个出现故障怎么办?它说,There are 2 unfinished hosts (1 of them are currently active), they are going to execute the query in background. 启动时会收到当前查询吗?我怎么能确定?谢谢。
    • 分布式 DDL 说的。实际上,优化查询仅在表的领导者处才有意义。你集群 2x2。所以你有两个领导者(每个分片一个)。那个唯一活着的领导者在 ZK 中安排了一次合并并自己执行它,并将有关新合并部分的元信息放入 ZK。当该分片中的另一个副本生效时,它将读取 ZK 并执行合并或下载新部分(这取决于几个因素,算法相当大,在这里解释它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多