将replacingmergetree用作可更新表:如何删除?

7ajki6be  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(392)

我使用clickhouse作为“一种可更新的大型(数亿行)表”,具有 ReplacingMergeTree . 我需要按批插入并执行一些非聚合选择。很好用。
尽管这是一个有点黑客,远远不是最佳的(我的意思是不像clickhouse的olap),它可以扩展得相当好,仍然执行速度比系统或多或少致力于此,如hbase或rdbms(为我的需要)。
我用一个 ReplacingMergeTree 带键的表:

CREATE TABLE Things (Key Int32, ValueA Int32, ValueB Int32) 
ENGINE = ReplacingMergeTree() ORDER BY Key

我插入:

INSERT INTO Things (Key,ValueA,ValueB) ...

并用“ FINAL “修饰符:

SELECT Key,ValueA,ValueB FROM Things FINAL WHERE ...

我可以使用名为“killed”的列来“删除”对象。但有时,我需要清理“杀死”的对象,以防止表不断增长。
我找到的唯一方法是重新创建一个新表并在其中插入非终止行。有更聪明的方法吗?

4jb9z9bj

4jb9z9bj1#

clickhouse支持 DML 操作,所以您不需要 ReplacingMergeTree 像这样的墓碑记录。
结帐https://clickhouse.yandex/docs/en/query_language/alter/#mutations 更多细节。

相关问题