Greenplum-表分区

在前面Greenplum-表的分布策略文章中,我们学习了Greenplum的几种表分布的策略,包括HASH分布、随机分布、复制表三种分布策略。
表的分布策略可以实现表的数据能否均匀的分布在不同的Segment实例中。除了表的分布策略以外,Greenplum还支持对表进行分区。
分区是在每个Segment内部的行为,将表创建为分区表后,表会拆分为ROOT表和子分区表,数据都存放在子分区表中,ROOT表不存储数据。

Greenplum中的分区有两种方式:list(列表)分区及range(范围)分区。这两个分区方式可以随意组合形成多级分区。

range(范围)分区

通过PARTITION BY RANGE语法来定义

示例1:

=# CREATE TABLE sales
( id int, 
date date, 
amt decimal(10,2)
) DISTRIBUTED BY (id) PARTITION BY RANGE (date) (
 START (date '2020-01-01') INCLUSIVE
 END (date '2021-01-01') EXCLUSIVE EVERY (INTERVAL '1' month') );
NOTICE:  CREATE TABLE will create partition "sales_1_prt_1" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_2" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_3" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_4" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_5" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_6" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_7" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_8" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_9" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_10" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_11" for table "sales"
NOTICE:  CREATE TABLE will create partition "sales_1_prt_12" for table "sales"
CREATE TABLE
qianbase=# \d+ sales
Table "public.sales"
Column |     Type      | Modifiers | Storage | Stats target | Description
--------+---------------+-----------+---------+--------------+-------------
id     | integer       |           | plain   |              |
date   | date          |           | plain   |              |
amt    | numeric(10,2) |           | main    |              |
Child tables: sales_1_prt_1,
sales_1_prt_10,
sales_1_prt_11,
sales_1_prt_12,
sales_1_prt_2,
sales_1_prt_3,
sales_1_prt_4,
sales_1_prt_5,
sales_1_prt_6,
sales_1_prt_7,
sales_1_prt_8,
sales_1_prt_9
Distributed by: (id)
Partition by: (date)

示例2:

=# CREATE TABLE rank
 ( id int, 
 rank int, 
 year int,
 gender char(1),
 count int
 ) DISTRIBUTED BY (id) PARTITION BY RANGE (year) (
 START (2020) END (2021) EVERY 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值