首页 > 技术文章 > Clickhouse-insert 数据写入不成功问题

hdpdriver 2022-04-01 12:57 原文

[应用场景]

对副本表进行 alter delete 数据后,同样的数据再进行 insert into 操作.

[问题复现]

[问题解释]
对副本表 insert 语句的数据会划分为数据块. 每个数据块会生成 block_id ,存在 zookeeper 相应表目录的 block 子目录下.根据这个 block_id 数据块会去重,对于被多次写的相同数据块(大小相同且具有相同顺序的相同行的数据块),该块仅会写入一次。所以同样的一份数据,多次 insert into 副本表,只有第一次会写入数据.
现在问题是当对这份数据进行 aleter delete 操作后.数据成功删除了,但是存在 zookeeper 上的 block_id 没有被一并删除.导致之后对这份数据进行 insert into ,会被表引擎判断为重复数据,而被略过,使数据没有落地到表里面.也就是查不出来这份数据.

[解决方案]
设置 set insert_deduplicate=0 临时关闭去重机制
找到 zookeeper 下对应的 block_id ,手动删除这个 block_id

推荐阅读