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 相关文章推荐
Centos环境下Postgresql 安装配置及环境变量配置技巧
May 18 PostgreSQL
如何使用PostgreSQL进行中文全文检索
May 27 PostgreSQL
PostgreSQL13基于流复制搭建后备服务器的方法
Jan 18 PostgreSQL
PostGIS的安装与入门使用指南
Jan 18 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
PostgreSQL数据库创建并使用视图以及子查询
Apr 11 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
PostgreSQL怎么创建分区表详解
Jun 25 PostgreSQL
PostgreSQL之连接失败的问题及解决
May 08 PostgreSQL
PostgreSQL出现死锁该如何解决
PostgreSQL基于pgrouting的路径规划处理方法
Apr 18 #PostgreSQL
postgreSQL数据库基础知识介绍
PostgreSQL数据库去除重复数据和运算符的基本查询操作
PostgreSQL聚合函数介绍以及分组和排序
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
PostgreSQL数据库创建并使用视图以及子查询
You might like
php多文件上传实现代码
2014/02/20 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
详解node中创建服务进程
2017/05/09 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
python自动翻译实现方法
2016/05/28 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
详解Python中for循环是如何工作的
2017/06/30 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Python使用type动态创建类操作示例
2020/02/29 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
Python如何合并多个字典或映射
2020/07/24 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
平面设计的岗位职责
2013/11/08 职场文书
2016年记者节感言
2015/12/08 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技