clickhouse中replacingMergeTree

ReplacingMergeTree是在MergeTree上添加了去重的功能,但是这个功能不可控,合并是一个后台的操作,除非手动触发,不然无法控制,并且它会删除具有相同(区内)主键的重复项。
特点:
1,去重时机不定, 数据的去重只会在合并的过程中出现, 合并会在未知的时间在后台进行,所以你无法预先作出计划。有一些数据可能仍未被处理
2,去重范围有限,有分区的情况下,去重只在分区内去重,没有分区,按照order by 字段去重(order by是必填字段,主键可以不填,主键是用于创建一级索引,也就是用于where查询的条件,用于二分查找到对应的index granularity而index granularity 是作用于order by的系数索引,默认值是8192,非特殊情况不更改,意思是间隔8192创建一个索引)
版本和飞版本
不带版本的,ENGINE = ReplacingMergeTree()
缺点:去重根据排序建去重,但是去重没有顺序,因为是多线程执行,所以数据是删除随机的,可能是删除了最新的数据
带版本的ENGINE = ReplacingMergeTree(字段名)
能解决不带版本的,其实带版本可理解为指明了按照哪个字段值的先后进行区去重,保留最新的数据,版本字段可以是数值版本字段可以是时间
小姐一下:
使用ORDER BY排序键作为判断重复数据的唯一依据。
只有在合并分区的时候才会触发删除重复数据的逻辑。
以数据分区为单位删除重复数据。当分区合并时,同一分区内的重复数据会被删除;不同分区之间的重复数据不会被删除。
在进行数据去重时,因为分区内的数据已经基于ORBER BY进行了排序,所以能够找到那些相邻的重复数据。
数据去重策略有两种:
如果没有设置ver版本号,则保留同一组(同一分区)重复数据中的最后一行。
如果设置了ver版本号,则保留同一组(同一分区)重复数据中ver字段取值最大的那一行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClickHouse是一个流行的列式存储数据库,支持多种存储引擎和表引擎。其ReplacingMergeTree是一种基于MergeTree的表引擎,用于支持数据的插入、更新和删除操作。 ReplacingMergeTree使用了一种称为“版本”的概念,即每个数据行都有一个版本号,每次更新、删除操作都会将数据行的版本号加1,这样就可以保留历史数据,同时也能够快速查询到最新的数据。 ReplacingMergeTree的核心是MergeTree,它是一种基于排序的数据结构,支持高效的查询和聚合操作。MergeTree使用了分层存储的方式,将数据按照时间分成不同的层级,同时还支持压缩和索引等优化策略,可以大大提高查询和存储效率。 ReplacingMergeTreeMergeTree的基础上增加了一些特殊的功能,如支持数据更新和删除,以及版本管理等。具体来说,当有新的数据插入时,如果与已有数据的主键冲突,则会将已有数据的版本号加1,然后将新数据插入到新的版本。如果需要删除数据,则会将数据的版本号加1,同时将数据标记为删除状态。当查询数据时,系统会自动过滤掉已经标记为删除的数据,只返回最新版本的数据。 总之,ReplacingMergeTreeClickHouse非常重要的表引擎之一,它可以支持高效的插入、更新和删除操作,同时还保留了历史数据,为用户提供了更加完整的数据查询和分析能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值