我是靠谱客的博主 紧张鸡翅,最近开发中收集的这篇文章主要介绍clickhouse分区表操作分区表操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分区表操作

只有MergeTree引擎支持数据分区,区内排序,合并,去重

create table tb_partition(
id UInt8,
name String,
birthday DateTime
)engine=MergeTree()
partition by toDate(birthday)
order by id;

insert into tb_partition values
(1,'xl',now()),
(2,'ly','2021-08-27 17:44:30'),
(3,'xf','2021-08-27 17:44:33'),
(4,'xc','1999-09-27 10:00:00');

select * from tb_partition;
┌─id─┬─name─┬────────────birthday─┐
│  2 │ ly   │ 2021-08-27 17:44:30 │
│  3 │ xf   │ 2021-08-27 17:44:33 │
└────┴──────┴─────────────────────┘
┌─id─┬─name─┬────────────birthday─┐
│  4 │ xc   │ 1999-09-27 10:00:00 │
└────┴──────┴─────────────────────┘
┌─id─┬─name─┬────────────birthday─┐
│  1 │ xl   │ 2021-08-30 09:59:33 │
└────┴──────┴─────────────────────┘


create table tb_city(
id UInt8,
name String,
birthday DateTime,
city String
)engine=MergeTree()
partition by (city)
order by id;

select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  1 │ a    │ 1999-09-27 10:00:00 │ HZ   │
│  2 │ b    │ 2000-09-27 10:00:00 │ HZ   │
└────┴──────┴─────────────────────┴──────┘


查看分区数据
select table,name,partition from system.parts where table='tb_partition'     
┌─table───┬─name───────────────────────────────────┬─partition─┐
│ tb_city │ aa2c8afe45b9cefa4743ec6ea0cd0cf7_1_1_0 │ HZ        │
│ tb_city │ d5c94d4e3fd2c16ed94e970edcfe56a3_2_2_0 │ SH        │
└─────────┴────────────────────────────────────────┴───────────┘


删除分区
alter table tb_city drop partition 'HZ';
select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘

insert into table tb_city values(2,'ly','2021-08-27 17:44:30','SH');
insert into table tb_city values(1,'xl',now(),'HZ');
select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  2 │ ly   │ 2021-08-27 17:44:30 │ SH   │
└────┴──────┴─────────────────────┴──────┘
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  1 │ xl   │ 2021-08-30 10:34:13 │ HZ   │
└────┴──────┴─────────────────────┴──────┘
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘

合并分区
optimize table tb_city;   
select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  1 │ xl   │ 2021-08-30 10:34:13 │ HZ   │
└────┴──────┴─────────────────────┴──────┘
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  2 │ ly   │ 2021-08-27 17:44:30 │ SH   │
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘

复制分区
create table tb_city_back as tb_city;

show create table tb_city_back;
CREATE TABLE system.tb_city_back(    
`id` UInt8,    
`name` String,    
`birthday` DateTime,    
`city` String
)ENGINE = MergeTree
PARTITION BY city
ORDER BY id
SETTINGS index_granularity = 8192


复制分区
alter table tb_city_back replace partition 'SH' from tb_city;    
select * from tb_city_back;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  2 │ ly   │ 2021-08-27 17:44:30 │ SH   │
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘

分区的装载和卸载
分区的卸载
alter table tb_city detach partition 'SH';    

select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  1 │ xl   │ 2021-08-30 10:34:13 │ HZ   │
└────┴──────┴─────────────────────┴──────┘

被卸载掉的分区会移动到detach目录下记住,
一旦分区被移动到了detached子目录,就代表它已经脱离了clickhouse的管理,
clickhouse并不会主动清理这些文件,这些分区文件会一直存在,除非我们主动删除或者使用attach语句重新装载


分区的装载
alter table tb_city attach partition 'SH';    
select * from tb_city;
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  2 │ ly   │ 2021-08-27 17:44:30 │ SH   │
│  3 │ c    │ 2001-09-27 10:00:00 │ SH   │
└────┴──────┴─────────────────────┴──────┘
┌─id─┬─name─┬────────────birthday─┬─city─┐
│  1 │ xl   │ 2021-08-30 10:34:13 │ HZ   │
└────┴──────┴─────────────────────┴──────┘

最后

以上就是紧张鸡翅为你收集整理的clickhouse分区表操作分区表操作的全部内容,希望文章能够帮你解决clickhouse分区表操作分区表操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部