截断并插入ClickHouse数据库

时间:2018-08-25 18:56:36

标签: sql database clickhouse yandex column-oriented

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

但是,我找到了一些建议,建议我们通过删除旧表,创建具有相同名称并插入的新表来间接实现此目标>将数据导入其中。

对此,我有几个问题。

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

1 个答案:

答案 0 :(得分:1)

  

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

支持

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

  

在删除和重新创建表的过程中,诸如Select之类的其他查询会发生什么?

这取决于您使用哪个表引擎。对于合并树系列,您会得到SELECT的类似快照的行为。

  

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

我认为这取决于基础文件系统可以处理文件删除的速度。对于大型表,它可能包含数百万个数据零件文件,这会导致截断缓慢。但是,就您而言,我不必担心。

  

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

我建议将partitons与(DateTime / 60)列(每分钟)一起使用,并使用用户脚本来不断进行过期分区的分区收集。