clickhouse ReplacingMergeTree 引擎简单使用

简单的说 ReplacingMergeTree 可以实现数据的 ‘修改’
修改的原理是merge的时候保留大版本号的数据。

创建 ReplacingMergeTree 引擎表

create table test.replacingTable (create_time Date, id UInt16, primaryKey String, version UInt16) 
ENGINE=ReplacingMergeTree(version) 
PARTITION BY toYYYYMM(create_time)
ORDER BY (primaryKey)
SETTINGS index_granularity = 8192;

插入模拟数据

insert into test.replacingTable (create_time, id, primaryKey, version) values ('2020-05-26', 1, 'hagrid', 10);
insert into test.replacingTable (create_time, id, primaryKey, version) values ('2020-05-26', 1, 'hagrid', 20);
insert into test.replacingTable (create_time, id, primaryKey, version) values ('2020-05-27', 1, 'hagrid', 30);

查询数据

select * from test.replacingTable

发现数据并没有修改
在这里插入图片描述
手动触发merge

optimize table test.replacingTable;

再次查询发现数据已经更新
在这里插入图片描述
ps: 发现一个有趣的现象,我在测试中发现,当使用批量插入数据的时候,哪怕手动触发了merge 数据也没有更新。
当我再次插入一条数据后执行merge,数据更新成功。
这里怀疑 ReplacingMergeTree 在执行merge操作的时候,对同一批来的数据有merge的策略,简单的说就是merge的操作懒执行,需要新数据插入作为事件驱动(怀疑未验证)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ClickHouse中的ReplacingMergeTree是一种特殊的MergeTree引擎,它允许在插入数据时进行更新,而不是简单地插入新数据。它使用相同的分区键和排序键来查找要更新的行,并将新数据合并到现有数据中。这使得在ClickHouse中进行实时数据更新变得更加容易和高效。 ### 回答2: ClickHouse是俄罗斯的一种高性能分布式列式数据库管理系统,针对大规模数据量和复杂查询的场景进行了优化。而ReplacingMergeTreeClickHouse内置的一种数据引擎,用于处理时序数据的插入和查询。 ReplacingMergeTree引擎是基于MergeTree引擎ClickHouse的默认存储引擎)进行了改进和扩展的。它具有以下特点和优势: 首先,ReplacingMergeTree引擎支持数据的高效插入。它通过将数据按照排序键的顺序进行分区,将新插入的数据写入合适的分区中。同时,对于旧数据的更新和删除,它采用了“标记删除”的方法,不会真实删除数据,而是将其标记为已删除状态,以保证数据的连续性和一致性。 其次,ReplacingMergeTree引擎支持快速的时序数据查询。它利用数据的分区和排序特性,对查询进行优化,能够高效地处理大规模时序数据集。同时,它还支持灵活的查询条件和聚合操作,可以满足各种复杂的查询需求。 除此之外,ReplacingMergeTree引擎还提供了数据的压缩和合并功能,可以有效地减小数据的存储空间占用,并提升查询性能。同时,它支持数据的备份和恢复,可以保证数据的可靠性和可恢复性。 总的来说,ReplacingMergeTree引擎ClickHouse中用于处理时序数据的重要存储引擎,具有高效的数据插入和查询功能,能够满足大规模时序数据处理的需求。 ### 回答3: ClickHouse是一个用于大规模数据分析的列式数据库管理系统。而ReplacingMergeTreeClickHouse中的一种表引擎,用于处理时间序列数据的合并和替换操作。 ReplacingMergeTree(以下简称RMT)是ClickHouse中最重要的一个引擎之一,用于处理时序数据。它基于MergeTree引擎,具有高效的写入和查询性能,并支持数据的合并和替换操作。 RMT的工作原理是将数据按照时间排序存储,同时根据主键进行分区和排序。每个分区的数据按照时间顺序组成一个有序链表,这样查询时可以高效地按时间范围进行扫描。 RMT支持数据合并和替换操作,即将新的数据合并到已存在的数据中,或者用新数据替换已存在的数据。合并操作通常用于将新数据追加到现有数据上,而替换操作则用于修复或更新现有数据。这些操作可以确保数据的一致性和准确性。 与其他引擎相比,RMT具有较低的存储成本和高的查询性能。它适用于存储大量的时序数据,如日志、传感器数据、监控数据等。RMT可以处理高并发的写入请求,并且在查询时可以提供快速的响应。 总之,ClickHouseReplacingMergeTree引擎是一种专门用于处理时序数据的高性能表引擎,它具有高效的写入和查询性能,支持合并和替换操作,适用于存储和分析大规模的时序数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值