我有一个特殊的场景,我需要每30分钟左右截断一次并将其批量插入ClickHouse DBMS中的表中。在ClickHouse中找不到截断选项的引用。
但是,我找到了一些建议,建议我们通过删除旧表,创建具有相同名称并插入的新表来间接实现此目标>将数据导入其中。
对此,我有几个问题。
答案 0 :(得分:1)
支持这是如何实现的?此过程中的步骤顺序是什么?
TRUNCATE
。现在无需删除并重新创建表。
在删除和重新创建表的过程中,诸如Select之类的其他查询会发生什么?
这取决于您使用哪个表引擎。对于合并树系列,您会得到SELECT
的类似快照的行为。
在ClickHouse中删除表并重新创建表通常需要多长时间?
我认为这取决于基础文件系统可以处理文件删除的速度。对于大型表,它可能包含数百万个数据零件文件,这会导致截断缓慢。但是,就您而言,我不必担心。
有没有一种更好,更干净的方法可以实现?
我建议将partitons与(DateTime / 60)列(每分钟)一起使用,并使用用户脚本来不断进行过期分区的分区收集。