clickhouse 删除数据的几种常见的方式

clickhouse数据库清理数据的方式很多,各有自己的优缺点,正面介绍几种常见的方式。

一、执行delete方式

此种方式为异步执行,并不是实时的。

## DELETE操作
-- 删除记录
alter table ck_dev01 delete where id='33';
-- 删除分片表数据
alter table ck_dev01 on cluster main_cluster where create_date>< '2024-03-01 16:00:00';

二、通过删除表分区的方式

##查询表分区
ck :) select database,table,partition,name, bytes_on_disk  from system.parts where table='ck_dev1';

┌─database─┬─table┬─partition─┬─name────┬─bytes_on_disk─┐
│ default  │ ck_dev1 │ 202402    │ 202402_5_5_0 │           541 │
│ default  │ ck_dev1 │ 202401    │ 202401_6_6_0 │           265 │
└──────────┴────────────────────┴───────────┴

##删除表分区
ck :) alter table ck_dev1 drop partition 202402;

 

三、执行truncate方式

truncate适用于删除全表数据的情况,效率比DELETE更高。

truncate table default.ck_dev01;

四、设置表数据生命周期

--设置表ck_dev01的TTL为60分钟
create table default.ck_dev01
(
    id Int64,
    name Nullable(String),
    create_time Date
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(create_time)
ORDER BY id
TTL toDate(create_time) + toIntervalMinute(60)

说明:toIntervalMinute:n分钟过期,toIntervalDay:n天过期,toIntervalMonth:n月过期

 

五、删除数据文件目录

clickhouse数据目录和元数据目录是分开的,所以删除数据目录文件并不影响表结构。

比如清空全部表数据操作如下:

1、停止clickhoue数据库

systemctl stop clickhouse-server

2、删除数据文件目录

rm -rf /opt/clickhouse/data/default/

3、启动clickhouse数据库

systemctl start clickhouse-server

备注:

1、truncate方式、删除数据文件目录方式会清理全部数据,一定要谨慎使用用。
2、删除数据文件目录方式需要停止CK进程,动作有点大
posted @ 2024-01-23 14:19  xuzhujack  阅读(4606)  评论(0编辑  收藏  举报
;