【问题标题】:Should I wait for async delete in ClickHouse before starting inserts?在开始插入之前我应该​​等待 ClickHouse 中的异步删除吗?
【发布时间】:2021-04-07 03:53:11
【问题描述】:

我需要在 ClickHouse 中重新加载最后一天的数据。我的想法是使用 ALTER TABLE DELETE 语句删除最后一天的行,然后插入更新的行。

我已经在the documentation 中找到:“突变也使用 INSERT INTO 查询进行部分排序:在提交突变之前插入到表中的数据将被突变,之后插入的数据不会被突变。”但是我不明白这句话。那么我应该在开始插入之前等待异步删除过程结束,还是可以立即开始插入?知道复制和不复制两种情况的答案很有趣。

【问题讨论】:

  • 如果 DELETE 可以覆盖插入的数据,您绝对应该在进行 INSERT 之前等待完成 DELETE 突变,以避免意外删除刚刚插入的数据。如果我是你,无论如何我都会等待删除完成。
  • 您无需等待。当提交变异时,CH 服务器会创建一个应该变异的部分列表。新插入不在此列表中。

标签: clickhouse


【解决方案1】:

您无需等待。

当提交变异时,CH 服务器创建并保存应该变异的部分列表。您可以在system.mutationsblock_numbers.partition_id 列中看到此列表。之后Alter 将控件返回给客户端。

新插入件(零件)不在此列表中,因为它们尚未创建。

变异本身稍后开始,异步并处理存储列表中的部分。

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 2018-11-27
    • 2021-08-12
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多