pg12自动创建表分区

本文介绍了在PostgreSQL 12中如何自动创建表分区,主要思路是按月增加分区,并利用pg_cron进行定时调度。文章详细讲解了pg_cron的使用、查看分区树的操作,以及在特定条件下并行分区表的智能JOIN。同时,文章通过一个实例展示了自动创建分区表的过程,并进行了执行前后的验证。
摘要由CSDN通过智能技术生成

pg12自动创建表分区

总体思路

按月增加分区,通过pg_cron来每月调度。

pg_cron

参考:https://help.aliyun.com/document_detail/150355.html?spm=a2c4g.11186623.6.1080.6b31157f7509OO

-- 每个月的4号执行指定脚本。
SELECT cron.schedule('* * 4 * *', 'select 1;')

1、常用操作

查看分区树
SELECT * FROM pg_partition_tree('tbl_log');

2、parallel partition table wise join

并行分区表智能JOIN(类似MPP)

当两个JOIN的分区表JOIN字段类型一致,并且分区在JOIN字段上,并且分区类型一致(枚举、LIST、范围、HASH),并且分区个数一致。满足这些条件时,PostgreSQL优化器会选择并行分区智能JOIN,子分区各自JOIN子分区。

引用德哥数据:

场景 数据量 关闭并行 开启并行 并行度 开启并行性能提升倍数
parallel partition table wise agg 10亿 191 秒 8 秒 24 23.9 倍
问题

1、为什么需要分区个数一致才能走wise join?

3、自动创建表分区

3.1、创建测试表
create table tbl_log
(
    id          serial,
    create_time timestamp(0) without time zone,
    remark      char(1)
) PARTITION BY RANGE (create_time);

CREATE TABLE tbl_log_p201801 PARTITION OF tbl_log FOR VALUES FROM ('2018-01-01') TO ('2018-02-01');
CREATE TABLE tbl_log_p201802 PARTITION OF tbl_log FOR VALUES FROM ('2018-02-01') TO ('2018-03-01');
CREATE TABLE tbl_log_p201802 PARTITION OF tbl_log FOR VALUES FROM ('2018-03-01') TO ('2018-04-01');
CREATE TABLE tbl_log_default 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值