0
点赞
收藏
分享

微信扫一扫

clickhouse的修改删除操作

像小强一样活着 2022-04-30 阅读 82
大数据

clickhouse的修改删除操作

更新语句形如:
alter table clickhouseTable update 字段A=xx where id = ,
删除语句形如:
alter table clickhouseTable delete where id >10
等sql语句的执行是一个非常耗费资源的操作,他会消耗大量的磁盘io和cpu时间周期,其sql的执行过程是异步的,有专门的后台执行线程异步执行,sql语句是不支持事务操作的,一旦执行就会开始对数据产生影响,并且无法回滚.

clickhouse修改删除操作实现原理

clickhouse实现update 和 delete 操作非常的简单粗暴,首先他会在表的目录下新建一个记录sql语句的mutation.txt文件,里面记录了要执行的update或者delete操作,随后它以分区为单位,对每个分区目录都创建一个同名的但是加了后缀的另一个分区,比如有一个叫做20200918分区,那么会创建一个新的分区比如叫做20200918_6的分区名,然后20200918分区的数据根据sql的条件迁移到20200918_6中,对于每个分区都是这样处理,这个过程非常耗费cpu和磁盘io,性能损耗极大.当数据都全部被迁移到新创建的分区后,下次mergetree合并操作时就会把旧的分区物理删除释放磁盘空间,由于该操作是一个异步的过程,执行的进度只能够通过观察system.mutations表来观察执行的进度

举报

相关推荐

0 条评论