clickhouse 分区表

分区表底层怎么存储

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


insert into tb_partition
values (1, 'zs', now()),
       (2, 'ls', '1999-11-11 11:12:13'),
       (3, 'ww', '1999-11-11 12:12:13');

查询数据

在这里插入图片描述
1)先从系统表中,查询分区存储情况

select table,
       name,
       partition,
       rows
from system.parts
where table = 'tb_partition';

在这里插入图片描述

2)证实分区存储

在这里插入图片描述

复制分区

在这里插入图片描述

-- 创建相同表结构
create table new_tb_partition as tb_partition;
-- 复制分区 1999-11-11 的数据到表 new_tb_partition
alter table new_tb_partition replace partition '1999-11-11' from tb_partition;
-- 查询数据
select * from new_tb_partition;

在这里插入图片描述

删除分区

在这里插入图片描述

alter table new_tb_partition drop partition '1999-11-11';

分区合并

在这里插入图片描述

insert into tb_partition
values(4, 'lw', '1999-11-11 22:17:13');


select * from tb_partition;

在这里插入图片描述
手动触发分区合并

optimize table tb_partition final;

在这里插入图片描述

分区装载和卸载

在这里插入图片描述

分区卸载:将 2024-03-09 分区数据给卸载掉

alter table tb_partition detach partition '2024-03-09';
select * from tb_partition;

在这里插入图片描述
在这里插入图片描述

分区装载:将 2024-03-09 分区数据在给装载上

alter table tb_partition attach partition '2024-03-09';

select * from tb_partition;

在这里插入图片描述

分区合并规则

create table tb_merge
(
    uid      UInt32,
    name     String,
    birthday Datetime,
    city     String
) engine = MergeTree
      partition by (toDate(birthday))
      order by uid;

在这里插入图片描述

1)第1次插入数据

insert into tb_merge
values (1, 'zs', '1999-08-08 11:12:13','BJ'),
       (1, 'zss', '1999-08-08 11:12:13','BJ'),
       (1, 'ls', '1999-11-11 11:12:13','BJ'),
       (1, 'lss', '1999-11-11 12:12:13','BJ');

在这里插入图片描述

2)第2次插入数据

insert into tb_merge
values (1, 'zs', '1999-08-08 11:12:13','BJ'),
       (1, 'zss', '1999-08-08 11:12:13','BJ'),
       (1, 'ls', '1999-11-11 11:12:13','BJ'),
       (1, 'lss', '1999-11-11 12:12:13','BJ');

在这里插入图片描述

3)手动触发分区合并

-- 如果不加final 可能会合并部分分区
optimize table tb_merge final ;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值