在 ClickHouse 数据库中截断和插入
Truncate and Insert in ClickHouse Database
我有一个特定的场景,我需要每隔 30 分钟左右截断并批量插入到 ClickHouse DBMS 中的 Table 中。我在 ClickHouse 中找不到 truncate 选项的参考。
但是,我可以找到一些建议,我们可以通过 删除 旧的 table, 创建 一个新的来间接实现此目的table 具有相同的名称并且正在向其中插入 数据。
关于这个,我有几个问题。
- 这是如何实现的?此过程中的步骤顺序是什么?
- 在删除和重新创建 table 期间,Select 等其他查询会发生什么情况?
- 在 ClickHouse 中删除和重新创建 table 通常需要多长时间?
- 有没有更好更简洁的方法可以实现这一目标?
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) 列(每分钟)以及不断为过时分区进行分区收集的用户脚本。
我有一个特定的场景,我需要每隔 30 分钟左右截断并批量插入到 ClickHouse DBMS 中的 Table 中。我在 ClickHouse 中找不到 truncate 选项的参考。
但是,我可以找到一些建议,我们可以通过 删除 旧的 table, 创建 一个新的来间接实现此目的table 具有相同的名称并且正在向其中插入 数据。
关于这个,我有几个问题。
- 这是如何实现的?此过程中的步骤顺序是什么?
- 在删除和重新创建 table 期间,Select 等其他查询会发生什么情况?
- 在 ClickHouse 中删除和重新创建 table 通常需要多长时间?
- 有没有更好更简洁的方法可以实现这一目标?
支持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) 列(每分钟)以及不断为过时分区进行分区收集的用户脚本。