【问题标题】:Using ReplacingMergeTree as an updatable table: how to delete?使用 ReplacingMergeTree 作为可更新表:如何删除?
【发布时间】:2019-04-30 16:08:00
【问题描述】:

我将 ClickHouse 用于带有ReplacingMergeTree 的“一种可更新的大型(数亿行)表”。我需要批量更新并做一些非聚合选择。它工作正常。

即使它有点 hack 并且远非最佳(我的意思是与 OLAP 的 Clickhouse 不同),它可以很好地扩展并且仍然比 HBase 或 RDBM 等或多或少专用于此的系统更快(满足我的需要)。

我使用带键的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”的列“删除”对象。但有时,我需要清理“Killed”对象以防止表无休止地增长。

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

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

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

    结帐https://clickhouse.yandex/docs/en/query_language/alter/#mutations了解更多详情。

    【讨论】:

    • 我进行“小批量”更新(例如每批 1000 条记录)。这就是为什么我相信 ReplacingMergeTree 比 muation 更好。但是谢谢,清理突变似乎是个好主意。
    • 是的,这很合理
    猜你喜欢
    • 2015-12-10
    • 2021-02-03
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多