ReplacingMergeTree
这个引擎可以删除重复的数据,但是不保证数据的绝对唯一。
设计之初是为了节约空间把相同的数据合并,不是为了做唯一校验。
而且合并行为是后天控制的,没有强唯一
建表写入
sql
create table learning.ReplacingMergeTree_table(
id UInt8,
info String,
timestamp DateTime
) engine = ReplacingMergeTree(timestamp)
order by id;
sql
insert into learning.ReplacingMergeTree_table values (1,'js','2026-05-05 00:10:10');
insert into learning.ReplacingMergeTree_table values (1,'js','2026-05-04 00:10:10');
insert into learning.ReplacingMergeTree_table values (1,'js','2026-05-04 00:10:10');
查询后可以看到 数据不会直接合并

命令合并
为了演示强行执行合并命令
sql
optimize table learning.ReplacingMergeTree_table final

执行完后可以看到 之保留了 timestamp 最大的那一条,因为我们设计的是 按照 timestamp 来去重 engine = ReplacingMergeTree(timestamp)