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无序uuid性能测试及对数据库的影响
Jun 11 PostgreSQL
通过Qt连接OpenGauss数据库的详细教程
Jun 23 PostgreSQL
PostgreSQL解析URL的方法
Aug 02 PostgreSQL
PostGIS的安装与入门使用指南
Jan 18 PostgreSQL
Rust 连接 PostgreSQL 数据库的详细过程
Jan 22 PostgreSQL
PostgreSQL事务回卷实战案例详析
Mar 25 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 PostgreSQL
PostgreSQL数据库创建并使用视图以及子查询
Apr 11 PostgreSQL
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
Apr 12 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
postgresql之greenplum字符串去重拼接方式
May 08 PostgreSQL
PostgreSQL出现死锁该如何解决
PostgreSQL基于pgrouting的路径规划处理方法
Apr 18 #PostgreSQL
postgreSQL数据库基础知识介绍
PostgreSQL数据库去除重复数据和运算符的基本查询操作
PostgreSQL聚合函数介绍以及分组和排序
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
PostgreSQL数据库创建并使用视图以及子查询
You might like
海贼王:最美的悬赏令!
2020/03/02 日漫
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP7内核之Reference详解
2019/03/14 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
js 一个关于图片onload加载的事
2013/11/10 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python正则表达式使用范例分享
2016/12/04 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
python中Apriori算法实现讲解
2017/12/10 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Python单元测试与测试用例简析
2019/11/09 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
python tkinter实现连连看游戏
2020/11/16 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
创业计划书模版
2014/02/05 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
同意报考证明
2015/06/17 职场文书
学生退学证明
2015/06/23 职场文书
庭外和解协议书
2016/03/23 职场文书