暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Clickhouse数据更新和删除概述

Ty3306 2022-12-23
4783

在Clickhouse中可以有多种方法来更新数据,不同方法适用的场景不同。总的来说,在CK中更新数据方法有以下几种:

(1)直接使用update语句

(2)先删除数据,再插入最新的数据

(3)ReplacingMergeTree表引擎+Insert语句

(4)CollapsingMergeTree表引擎+Insert语句

(5)VersionedCollapsingMergeTree表引擎+Insert语句

Update和Delete操作
ClickHouse提供了DELETE和UPDATE的能力,这类操作被称为Mutation操作,它可以看作ALTER语句的变种。

虽然Mutation能最终实现修改和删除,但不能完全以通常意义上的UPDATE和DELETE来理解,我们必须清醒地认识到它的不同,主要有以下几个方面:

Mutation语句是一种“很重”的操作,更适用于批量数据的修改和删除;
它不支持事务,一旦语句被提交执行,就会立刻对现有数据产生影响,无法回滚;
Mutation语句的执行是一个异步的后台过程,语句被提交之后就会立即返回,但这并不代表具体逻辑已经执行完毕,它的具体执行进度需要通过system.mutations系统表查询。
对于*MergeTree表引擎,在执行Mutation操作时是通过重写整个分区数据来实现的(使用新的分区代替老的分区)。如果需要操作的分区非常多,optimize的耗时会非常长甚至失败。此时,可以根据实际情况和分区的分布使数据的更新只涉及部分分区来提高效率。
对于update操作:不能更新是主键的列(在primary by或order by中的列),
对于delete操作:可以使用ALTER DELETE来灵活删除旧数据。对于定期删除操作,主要缺点是:需要有一个外部系统来提交操作命令。性能方面的考虑,因为即使只有一行要删除,Mutation操作也会重写完整的分区。

原文链接:https://blog.csdn.net/zg_hover/article/details/124558312

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论