在 ClickHouse 数据库中截断和插入

Truncate and Insert in ClickHouse Database

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

但是,我可以找到一些建议,我们可以通过 删除 旧的 table, 创建 一个新的来间接实现此目的table 具有相同的名称并且正在向其中插入 数据。

关于这个,我有几个问题。

  1. 这是如何实现的?此过程中的步骤顺序是什么?
  2. 在删除和重新创建 table 期间,Select 等其他查询会发生什么情况?
  3. 在 ClickHouse 中删除和重新创建 table 通常需要多长时间?
  4. 有没有更好更简洁的方法可以实现这一目标?

How is this achieved ? What is the sequence of steps in this process ?

支持

TRUNCATE。现在无需删除并重新创建 table。

What happens to other queries such as Select during the time when the table is being dropped and recreated ?

这取决于您使用的 table 引擎。对于 merge-tree family,您会得到 SELECT.

的类似快照的行为

How long does it usually take for a table to be dropped and recreated in ClickHouse ?

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

Is there a better and clean way this can be achieved ?

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