区别于MergeTree表引擎,ReplacingMergeTree删除重复数据时是通过相同的分区值(ORDER BY的值)
数据去重发生在后台合并数据时,后台合并数据是随机的,所以有时会有一些没处理的数据,可以通过OPTIMIZI来手动合并,官方建议不要指望它,因为OPTIMIZE会读写大量的数据(可能是会从头再合并一的原因吧)
所以,ReplacingMergeTre适用于后台去重数据来节省空间的场景,但不保证没有一个重复的(官方说的,不是我说的)
建一个表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = ReplacingMergeTree([ver [, is_deleted]]) [PARTITION BY expr] [ORDER BY expr] [PRIMARY KEY expr] [SAMPLE BY expr] [SETTINGS name=value, clean_deleted_rows=value, ...]
ver
可选,填入类型UInt*
, Date
,