clickhouse 分区表管理,删除旧数据
clickhouse删除旧的分区,清除旧数据
·
1,手动删除分区数据
测试clickhouse 分区表:查询分区,删除分区
- engine: ReplicatedReplacingMergeTree, MergeTree
###1, 创建分区表 (时间格式化函数:toYYYYMMDD, toYYYYMM )
ck01 :) CREATE TABLE tb_test_partitions
(
`id` Int64,
`saleDate` Date,
`saleMoney` Float32
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(saleDate)
ORDER BY (saleMoney);
ck01 :) insert into tb_test_partitions values (1,'2020-10-02 14:15:23',300.50),(2,'2020-11-02 14:15:23',100.50),(3,'2020-11-02 14:15:23',200.50);
ck01 :) select * from tb_test_partitions;
┌─id─┬───saleDate─┬─saleMoney─┐
│ 2 │ 2020-11-02 │ 100.5 │
│ 3 │ 2020-11-02 │ 200.5 │
└────┴────────────┴───────────┘
┌─id─┬───saleDate─┬─saleMoney─┐
│ 1 │ 2020-10-02 │ 300.5 │
└────┴────────────┴───────────┘
###2, 查看分区信息
[root@ck01 ~]# ll /app/pocdata/ck/clickhouse/data/default/tb_test_partitions/
total 16
drwxr-x--- 2 clickhouse clickhouse 4096 Dec 8 10:02 202010_3_3_0
drwxr-x--- 2 clickhouse clickhouse 4096 Dec 8 10:02 202011_4_4_0
drwxr-x--- 2 clickhouse clickhouse 4096 Dec 8 10:01 detached
-rw-r----- 1 clickhouse clickhouse 1 Dec 8 10:01 format_version.txt
ck01 :) select database,table,partition,name, bytes_on_disk from system.parts where table='tb_test_partitions';
┌─database─┬─table──────────────┬─partition─┬─name─────────┬─bytes_on_disk─┐
│ default │ tb_test_partitions │ 202010 │ 202010_3_3_0 │ 221 │
│ default │ tb_test_partitions │ 202011 │ 202011_4_4_0 │ 232 │
└──────────┴────────────────────┴───────────┴──────────────┴───────────────┘
###3, 删除某分区
ck01 :) alter table tb_test_partitions drop partition 202010;
ck01 :) select database,table,partition,name, bytes_on_disk from system.parts where table='tb_test_partitions';
┌─database─┬─table──────────────┬─partition─┬─name─────────┬─bytes_on_disk─┐
│ default │ tb_test_partitions │ 202011 │ 202011_4_4_0 │ 232 │
└──────────┴────────────────────┴───────────┴──────────────┴───────────────┘
###4, 查看表数据
ck01 :) select * from tb_test_partitions;
┌─id─┬───saleDate─┬─saleMoney─┐
│ 2 │ 2020-11-02 │ 100.5 │
│ 3 │ 2020-11-02 │ 200.5 │
└────┴────────────┴───────────┘
2,设置表数据生命周期
- toIntervalMinute:n分过期
- toIntervalDay:n天过期
- toIntervalMonth:n月过期
CREATE TABLE default.tb_test_partitions3
(
`id` Int64,
`saleDate` Date,
`saleMoney` Float32
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(saleDate)
ORDER BY saleMoney
TTL toDate(saleDate) + toIntervalMinute(10) //10分钟后过期
#验证:插入一条当前时间的数据,过一段时间,再来查找该数据:如果没有查询到,则被过期删除了
修改表的生命周期
- 验证是否生效:
show create table xx;
#1,在单个主机范围修改:需要在所有主机执行一次
ALTER TABLE tb_test_partitions MODIFY TTL toDate(`saleDate`) + toIntervalMinute(1);
#等价于:ALTER TABLE tb_test_partitions MODIFY TTL toDate(`saleDate`) + INTERVAL 1 MINUTE;
#2,在集群范围修改:只需要在任意主机执行一次
alter table tb_test_partitions on cluster ck_cluster_1 MODIFY TTL toDate(`saleDate`) + toIntervalDay(90);

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)