PostgreSQL怎么创建分区表详解

2022-12-08 0 1,053

目录前言列分区表范围分区表总结

前言

PG 假如我们想像Hive那也创建动态分区是不能实现的。

那么需要我们手动通过脚本来创建分区表,创建分区表必须要创建主表和分区表。

因此我们可以根据我们需求提前用脚本把分区表生成即可,也可以用触发器来实现。

主表:定义我们的一些约束,以及分区键,实质上不存储数据

分区表:主要是用来存储数据的。所有列及约束都跟随主表

注意:如果我们指定分区表不存在会报错,因此一定要提前创建好分区表,并且要数据不能有遗漏的分区键。

列分区表

就是我们指定数据库中字段的一列作为分区字段。

1.如下创建分区表的主表 关键字【partition by list】:

create table fenqu(id int,date varchar) partition by list(date)

2.创建分区表并指定主表:

create table fenqu_20210805 partition of fenqu for values in (\’2021-08-05\’);create table fenqu_20210806 partition of fenqu for values in (\’2021-08-06\’);

3.插入数据

insert into fenqu values(1,\’2021-08-05\’);insert into fenqu values(2,\’2021-08-05\’);insert into fenqu values(3,\’2021-08-05\’);insert into fenqu values(4,\’2021-08-05\’);insert into fenqu values(5,\’2021-08-06\’);insert into fenqu values(6,\’2021-08-06\’);insert into fenqu values(7,\’2021-08-06\’);insert into fenqu values(8,\’2021-08-06\’);

4.验证数据是否插入成功

我们插入的是主表,但是我们可以通过分表来查询。

第一种如上用分区表的形式查询。

PostgreSQL怎么创建分区表详解

第二种 我们通过指定查询条件为我们的分区列

PostgreSQL怎么创建分区表详解

范围分区表

1.创建访问分区表的主表 关键字【partition by range】

create table fenqu2(id int,date varchar) partition by range(date)

2.创建分区表并指定主表

create table fenqu_20210805_10 partition of fenqu2 for values from (\’2021-08-05\’) to (\’2021-08-10\’);create table fenqu_20210810_15 partition of fenqu2 for values from (\’2021-08-10\’) to (\’2021-08-15\’);

注意:一定要他两个范围是左闭右开(包含左边,不包含右边)所以两个分区衔接一定要紧密。

3.插入数据

insert into fenqu2 values(1,\’2021-08-05\’);insert into fenqu2 values(2,\’2021-08-06\’);insert into fenqu2 values(3,\’2021-08-07\’);insert into fenqu2 values(4,\’2021-08-09\’);insert into fenqu2 values(5,\’2021-08-10\’);insert into fenqu2 values(6,\’2021-08-11\’);insert into fenqu2 values(7,\’2021-08-12\’);insert into fenqu2 values(8,\’2021-08-13\’);insert into fenqu2 values(9,\’2021-08-14\’);insert into fenqu2 values(10,\’2021-08-15\’);

会报错如下错误:因为左闭右开,

PostgreSQL怎么创建分区表详解

4.验证数据是否正确

我们使用查询分区表的形式查询:

PostgreSQL怎么创建分区表详解

结果正确,数据已经进入到我们指定的分区。

其实最核心的使我们分区键的选择可以根据数据量来决定颗粒度,

一般我们数据量比较大的时候我们就按照天,小时(这种可以使用列分区表)。

数据量小我们可以按照季,月,周来实现分区(可以使用范围分区表)当然当我们列中有季,月,周也可以使用列分区

赠送内容:

我们再对PG进行更新插入时需要对标设置联合主键

ALTER TABLE log.voice_query_answer_log ADD CONSTRAINT \”voice_query_answer_log_pkey\” PRIMARY KEY (log_date,log_timestamp,request_id,device_sn);

总结

到此这篇关于PostgreSQL怎么创建分区表的文章就介绍到这了,更多相关PostgreSQL创建分区表内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PostgreSQL数据库 PostgreSQL怎么创建分区表详解 https://www.u-9.cn/sql/postgresql/6607.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

注册会员,众多资源免费下载