clickhouse的表生命周期和分区操作
表生命周期
语法
日志表没有自动过期功能,为了防止历史日志数据占用大量磁盘空间,可以手动为每张query_log表设定TTL(这边根据需求设置默认为15天)。
ALTER TABLE system.query_log MODIFY TTL event_date + INTERVAL 15 DAY;
DateTime字段
event_date的字段类型需要为date_time,如:
CREATE TABLE example_table
(
d DateTime,
b String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d;
列TTL
ALTER TABLE example_table
MODIFY COLUMN
c String TTL d + INTERVAL 1 DAY;
表TTL
ALTER TABLE example_table
MODIFY TTL d + INTERVAL 1 DAY;
分区
创建分区
建表时,增加 partition by字段,示例如下:
create table tb_city(
id UInt8,
name String,
birthday DateTime,
city String
)engine=MergeTree()
partition by (city)
order by id;
查看分区
查看分区数据
select table,name,partition from system.parts where table='tb_partition'
删除分区
alter table tb_city drop partition 'HZ';
合并分区
optimize table tb_city;
分区其它操作
复制分区
alter table tb_city_back replace partition 'SH' from tb_city;
分区的装载和卸载
分区的卸载
alter table tb_city detach partition 'SH';
分区的装载
alter table tb_city attach partition 'SH';