删除一个partition并重新创建它,是否要等待删除partition后台完成?
发布于 2 个月前 作者 kikanjuu 347 次浏览 来自 问答

我们有一张按日期分区的表。 我们要实现重新载入数据到这张表,删除之前已有数据的功能。

对于用户指定的一个日期, 步骤一: 调用ALTER TABLE DROP PARTITION,删除这个日期的Partition。 步骤二: 插入这个日期的新数据,从而新建了一个同样日期的Partition。

根据ClickHouse官方文档,DROP PARTITION是后台异步完成的。 "Data parts will be tagged as inactive and will be completely deleted in approximately 10 minutes." https://clickhouse.yandex/docs/en/query_language/queries/#alter

那么在步骤一和步骤二之间,我们是否需要等待删除旧Partition完成? 如果需要等待,我们怎么知道何时旧Partition删除完成了?

2 回复

需要等待,不然前面删除的数据会恢复到原来的表中,我测试过。最好更新数据的方式是:

  1. create tmp,insert new data to tmp table
  2. alter table tmp detach partition ‘2018-07-08’
  3. mv /ck_data_dir/data/tmp/detach/* /ck_data_dir/data/t/detach
  4. alter table t drop partition ‘2018-07-08’
  5. alter table t attach partition ‘2018-07-08’

我最近也测试了一下,而且使用单元测试反复跑。结论和你的测试相反——没有发现它会恢复已删除的数据。

回到顶部