本帖最后由 牵网线的 于 2024-2-29 18:58 编辑
一、通过删除表分区的方式
- ##查询某表分区
- clickhouse :) select database,table,partition,name, bytes_on_disk from system.parts where table='ck_test';
- ┌─database─┬─table┬─partition─┬─name────┬─bytes_on_disk─┐
- │ default │ ck_test │ 202402 │ 202402_3_3_0 │ 221 │
- │ default │ ck_test │ 202401 │ 202401_4_4_0 │ 232 │
- └──────────┴────────────────────┴───────────┴
- ##删除某表分区
- clickhouse :) alter table ck_test1 drop partition 202401;
复制代码
二、执行delete方式
该方式为异步执行,并非实时。
- ## DELETE操作
- -- 删除记录
- alter table ck_table01 delete where id='1';
复制代码
三、执行truncate方式
truncate适用于删除全表数据的情况,而且效率比DELETE更高。
- truncate table default.ck_table01;
复制代码
四、设置表数据生命周期
- --设置ck_table01的TTL为30分钟
- create table default.ck_table01
- (
- id Int64,
- name Nullable(String),
- address Nullable(String),
- create_date Date
- )
- ENGINE = MergeTree
- PARTITION BY toYYYYMM(create_date)
- ORDER BY id
- TTL toDate(create_date) + toIntervalMinute(30)
复制代码
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
复制代码 |