clickhouse delete后insert数据不可见问题

本文解决使用ClickHouse ReplicatedMergeTree引擎表,在进行类似Hive overwrite模式写数据时,出现insert后删除的数据不可见的问题。通过调整insert_deduplicate参数设置,确保数据正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clickhouse delete后 insdert 相同数据不可见问题

场景:

使用ReplicatedMergeTree 引擎 创建的表 做类似于hive overwirte 模式的写数据 ,具体的操作步骤是:先使用delete 然后在insert 发现insert 删除前的相同的数据 select时不可见

解决方案:

  • session 级别 : set insert_deduplicate =0 ; 详细说明见:clickhouse官方文档
    在这里插入图片描述

具体操作

  • 第一步:创建一个Replicated表
CREATE TABLE test
(
  `id` Int32,
  `day` Int32
)
  ENGINE = ReplicatedMergeTree('/clickhouse/default/test/', 'replica')
  PARTITION BY day
ORDER BY (id, day)
SETTINGS index_granularity = 8192;
  • 第2步: 初始化 3条记录
insert into test (id, day) values(1 , 202010),(2 , 202010),(3 , 202010);
  • 第3步: 删除某一条记录
ALTER TABLE  test   DELETE WHERE id=1;
  • 第4步: 查询 得到只有 ID 为 2 和 3 的数据
    在这里插入图片描述
  • 第5步: 插入一条第3 步中删除的数据
insert into test (id, day) values(1 , 202010)
  • 第6步 : 查询结果 没什么变化
    在这里插入图片描述

  • 第7步: 设置insert_deduplicat =0

set insert_deduplicate=0  ;
  • 第8步 :再次查询
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值