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方式、删除数据文件目录方式会清理全部数据,一定要谨慎使用用。标签:ck,删除,几种,dev01,table,数据,clickhouse From: https://www.cnblogs.com/xuzhujack/p/17982355
2、删除数据文件目录方式需要停止CK进程,动作有点大