2

我有一个特殊的场景,我需要每 30 分钟左右截断并批量插入 ClickHouse DBMS 中的表。我在 ClickHouse 中找不到截断选项的参考。

但是,我可以找到建议,我们可以通过删除旧表、创建一个具有相同名称的新表并将数据插入其中来间接实现这一点。

对此,我有几个问题。

  1. 这是如何实现的?这个过程中的步骤顺序是什么?
  2. 在删除和重新创建表期间,其他查询(例如Select )会发生什么情况?
  3. 在 ClickHouse 中删除和重新创建表通常需要多长时间?
  4. 有没有更好更干净的方法可以实现?
4

1 回答 1

2

这是如何实现的?这个过程中的步骤顺序是什么?

TRUNCATE支持。现在无需删除并重新创建表。

在删除和重新创建表期间,其他查询(例如 Select)会发生什么情况?

这取决于您使用的表引擎。对于合并树族,您将获得类似快照的行为SELECT

在 ClickHouse 中删除和重新创建表通常需要多长时间?

我认为这取决于底层文件系统处理文件删除的速度。对于大型表,它可能包含数百万个数据部分文件,这会导致截断速度慢。但是,在您的情况下,我不会担心太多。

有没有更好更干净的方法可以实现?

我建议使用带有 (DateTime / 60) 列(每分钟)的分区以及不断为过时分区进行分区收集的用户脚本。

于 2018-08-26T07:54:45.213 回答