使用ReplacingMergeTree作为可更新表:如何删除?

时间:2018-11-28 17:09:39

标签: clickhouse

我正在将ClickHouse用于带有ReplacingMergeTree的“一种可更新的大型(亿万行)表”。我需要分批更新,并进行一些非汇总选择。很好。

即使有点hacker,而且远非最佳(我的意思是与OLAP的Clickhouse不同),它可以很好地扩展,并且仍然比或多或少专门针对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 ...

我可以使用名为“杀死”的列来“删除”对象。但是我不时需要清理“杀死”对象,以防止表不断增长。

我发现的唯一方法是重新创建一个新表并在其中插入非终止行。 有更聪明的方法吗?

1 个答案:

答案 0 :(得分:1)

ClickHouse在最新版本中支持DML操作,因此您不需要ReplacingMergeTree来删除这样的记录。

结帐https://clickhouse.yandex/docs/en/query_language/alter/#mutations以获得更多详细信息。