分区与分布
分区
分区是一种常见的表处理手段,将一张大表在物理上切割成几张小表,用户的操作仍然作用在大表上,而不需要关心数据实际落在哪张小表上。
当使用分区字段进行过滤查询时,可以减少数据扫描的范围,提升查询效率。
GP的分区表原理与Postgresql一致,通过表继承和约束实现,实际上使用的大表是一张逻辑表,不承载数据,数据落在各自的分区小表上。
注意点:
- 数据量是否够大:小表无需做分区
- 分区表方便对数据的生命周期做管理,可以方便地删除旧分区,或者将不常使用的旧数据归档其他存储介质上
- 查询时记得带分区字段
创建分区表
- 范围分区(Range Partition)
PARTITION BY RANGE(fate)
(
PARTITION p1 START ('2019-11-01') INCLUSIVE END ('2019-11-02') EXCLUSIVE,
PARTITION p2 START ('2019-11-02') INCLUSIVE END ('2019-11-03') EXCLUSIVE,
DEFAULT PARTITION pdefault
)
需要分区的时间范围很长时,可以使用快速分区
partition by range (date)
(
PARTITION pn START ('2019-11-01'::date) END