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─┐
│  22020-11-02100.5 │
│  32020-11-02200.5 │
└────┴────────────┴───────────┘
┌─id─┬───saleDate─┬─saleMoney─┐
│  12020-10-02300.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 │ 202010202010_3_3_0 │           221 │
│ default  │ tb_test_partitions │ 202011202011_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 │ 202011202011_4_4_0 │           232 │
└──────────┴────────────────────┴───────────┴──────────────┴───────────────┘

###4, 查看表数据
ck01 :) select * from tb_test_partitions;
┌─id─┬───saleDate─┬─saleMoney─┐
│  22020-11-02100.5 │
│  32020-11-02200.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);
Logo

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

更多推荐