位置: 编程技术 - 正文

PostgreSQL分区表(partitioning)应用实例详解

编辑:rootadmin

推荐整理分享PostgreSQL分区表(partitioning)应用实例详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能。分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如:

1、查询性能大幅提升2、删除历史数据更快3、可将不常用的历史数据使用表空间技术转移到低成本的存储介质上那么什么时候该使用分区表呢?官方给出的指导意见是:当表的大小超过了数据库服务器的物理内存大小则应当使用分区表,接下来结合一个例子具体记录一下创建分区表的详细过程。

创建分区表

首先看一下需求,现在有一张日志表,现在需要按表中的操作时间字段(operation_time)分区,如下图:

这个需求就是一个典型的按时间创建分区表,首先看一下步骤:

1.创建父表2.创建n个子表,每个子表都是继承于父表3.定义一个规则(Rule)或触发器(Trigger),把对主表的数据插入重定向到合适的分区表

如上所示,整体的大步骤就分为以上三个,当然还可以有一些小的优化措施,比如对于每个分区,在关键字字段上创建一个索引等等。首先来看第一步——创建父表。

在创建分区表之前应当先创建一张“父表”,所有分区表都从它继承,这个表中没有数据,也不要在这个表上定义任何检查约束及索引,现在我们就先创建这样一张表,但之前先建一个序列:

接下来创建“父表”,因为是日志表,所以表名命名为“t_sys_log_main”:

运行以上DDL语句创建父表,创建成功后接下来就可以挨个创建分区表了,由于每个分区表都是从父表继承的,所以分区表不会增加任何字段,下面我们按需求创建4张分区子表,分别用于存放9月、月、月和月的日志数据:

PostgreSQL分区表(partitioning)应用实例详解

如上所示,运行完成后即可创建4张分区子表,在上面的语句中我们添加了一个约束表示只允许插入本月的数据,接下来在这4张分区表的每个分区键上建立索引:

到此为止我们的分区表就创建完毕了,接下来需要考虑数据插入的问题,如何才能让不同日期的数据自动的插入与其对应的分区子表中呢?有两种解决方案,分别是:规则(Rule)和触发器(Trigger),相比触发器,Rule的开销更大,所以我在这里就不做过多介绍了,下面直接介绍Trigger的方式。

Trigger通常会结合自定义函数(Function)来实现分区插入,Function负责根据条件选择插入,而Trigger则负责Function的自动调用。首先定义Function,功能很简单,即根据日期区间insert数据即可:

最后再创建触发器用于执行刚才的Function:

到这里就全部创建完成了,最后测试一下看看结果。为了确认我们的触发器的确触发了,我们打开存储过程的统计开关,在postgresql.conf中,找到track_functions,改成all:

接下来就可以运行几条测试insert语句来看看是否能把指定的时间记录分别插入到与其对应的分区子表中,插入之前先看下sys_log_insert_trigger()的统计信息:

可以看到目前没有统计记录,接下来插入几条测试数据:

紧接着再看一下sys_log_insert_trigger()的统计信息:

如上图,可以看出调用了6次函数,因为我们插入了6条数据,至此分区表由创建到测试的整个过程就已经成功完成了。

总结

简单记录一下PostgreSQL创建分区表的完整步骤以及注意事项,希望对遇到同样问题的朋友有所帮助,The End。

PostgreSQL安装、配置及简单使用方法 一、PostgreSQL简介1、什么是PostgreSQLPostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON何JSONB类型,数组类型)和自定义类型。

windows PostgreSQL 9.1 安装详细步骤 PostgreSQL安装:一、windows下安装过程安装介质:postgresql-9.1.3-1-windows.exe(M),安装过程非常简单,过程如下:1、开始安装:2、选择程序安装目录:注

PostgreSQL之分区表(partitioning) PostgreSQL有一项非常有用的功能,分区表,或者partitioning。当某个TABLE的记录非常的多,千万甚至更多的时候,我们其实需要将他分割成子表。一个庞大

标签: PostgreSQL分区表(partitioning)应用实例详解

本文链接地址:https://www.jiuchutong.com/biancheng/312223.html 转载请保留说明!

上一篇:Mybatis调用PostgreSQL存储过程实现数组入参传递(mybatis调用存储过程详解)

下一篇:PostgreSQL安装、配置及简单使用方法

  • 增值税发票进销项不一致
  • 会计上已资本化处理的工资企业所得税前应如何扣除?
  • 招聘预算费用包括哪些预算清单
  • 平均股东权益在利润表中怎么看
  • 印花税的纳税人为书立合同双方
  • 怎么报企业所得税季报
  • 进账多于销项怎样报税
  • 职工发放福利的会计处理
  • 房企预收账款什么时候结转
  • 国有资产报废如何委托拍卖公司
  • 境外增值税代扣代缴
  • 企业代开租金专票开什么项目好?
  • 年薪制离职补偿金
  • 携税宝可以不买吗
  • 学生兼职需要交什么税
  • 向银行贷款资产包括哪些
  • 企业销售收入含不含税
  • 城建税有哪些征税项目
  • 利息收入会计如何做账
  • 开具红字发票后所冲销的销项税应怎么处理?
  • php中substr()
  • win10重装系统后网卡没了
  • deldir.exe是什么
  • 财政应返还额度年末有余额吗?
  • newsupd.exe - newsupd是什么进程 有什么用
  • 收到退回的保证金
  • php 上传
  • 财务费用属不属于生产成本
  • 股份有限公司变更法人的流程
  • .hpp是什么文件
  • 股权变更怎么缴纳个人所得税
  • react的前端
  • 融资性售后回租承租方为什么不交税
  • 关于php中的各种循环说法正确的是
  • 电力安装公司都有什么业务
  • 研发人员的差旅费可以加计扣除吗
  • 元素鼠标失灵了怎么办
  • php返回数据给ajax
  • 有关厉元朗的小说
  • vue学不懂怎么办
  • 时间序列模型ARIMA的优缺点
  • PHP strcmp()和strcasecmp()的区别实例
  • 发票报销是个人还是单位
  • dedecms采集怎么用
  • linux服务器架设指南
  • mongodb数据库操作遇到的问题和解决方案
  • 费用发票先入账吗
  • 工程施工新科目
  • 印花税减征比例
  • 没有发票的费用支出怎么入账
  • 新入职员工什么时候发工资
  • 专利技术转让损失会计分录
  • 购买原材料的支出
  • 会计中管理费用和制造费用的区别
  • 社保都有哪几项
  • 海关进口增值税专用缴款书在哪里打印
  • 临时设施属于什么科目
  • 发票内容可以写工程款吗
  • 推广费计入哪个科目
  • 购买汽车时的保险是什么
  • 居间活动费用由谁负担
  • 购进销售产品的会计分录
  • mac80211源码分析
  • 电脑怎么改xp系统
  • 电脑系统信息怎么关闭
  • 怎么查显卡信息
  • xp系统不能正常启动怎么修复
  • win10系统下如何安装谷歌浏览器插件?win10系统下谷歌浏览器插件的安装方法图文教程
  • win10天气系统怎么弄掉
  • 恶意软件清理
  • 安卓开源好处
  • android解析
  • 探探左划还是右划
  • 安卓判断横竖屏
  • 工具类别怎么填写
  • 广东电子税务局手机版
  • 税务局把我拉入黑名单了怎么办
  • 税务分享风险如何解决
  • 锂电池税收优惠政策
  • 发票为什么要验旧操作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设