PostgreSQL怎么创建分区表详解


Posted in PostgreSQL onJune 25, 2022

前言

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创建分区表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

PostgreSQL 相关文章推荐
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
May 21 PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 PostgreSQL
postgres之jsonb属性的使用操作
Jun 23 PostgreSQL
PostgreSQL自动更新时间戳实例代码
Nov 27 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 07 PostgreSQL
PostgreSQL逻辑复制解密原理解析
Sep 23 PostgreSQL
PostgreSQL出现死锁该如何解决
PostgreSQL基于pgrouting的路径规划处理方法
Apr 18 #PostgreSQL
postgreSQL数据库基础知识介绍
PostgreSQL数据库去除重复数据和运算符的基本查询操作
PostgreSQL聚合函数介绍以及分组和排序
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
PostgreSQL数据库创建并使用视图以及子查询
You might like
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
总经理助理的八要求
2013/11/12 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
酒店宣传语大全
2015/07/13 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
Java完整实现记事本代码
2022/06/16 Java/Android