简介
该引擎和MergeTree的不同之处在于它会删除具有相同主键的重复项。
在数据合并的时候会对主键进行去重,合并会在后台执行,执行时间未知,因此你无法预先做出计划,当然你也可以调用OPTIMIZE语句来发起合并计划,但是这种方式是不推荐的,因为OPTIMIZE语句会引发大量的读写请求。
建表语句
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])[PARTITION BY expr][ORDER BY expr][SAMPLE BY expr][SETTINGS name=value, ...]
- ENGINE:引擎名和参数。
- ver:版本列,类型可以是UInt*,Date,或者DateTime,可选择的参数。合并的时候ReplacingMergeTree从相同的主键中选择一行保留,如果ver列未指定,则选择最后一条,如果ver列已指定,则选择ver值最大的版本。
- PARTITION BY:分区键。要按月分区,可以使用表达式 toYYYYMM(date_column) ,这里的 date_column 是一个 Date 类型的列。这里该分区名格式会是 "YYYYMM" 这样。
- ORDER BY: 表的排序键。可以是一组列或任意的表达式。 例如: ORDER BY (Co