说说PostgreSql手动分区与自动分区

本文详细介绍了PostgreSQL数据库的分区功能,包括手动分区和自动分区的方法。手动分区适用于分区键值固定的场景,而自动分区在分区键不固定时更为便捷,但可能影响性能。以用户表为例,通过创建时间年月作为分区键,演示了如何创建和管理这些分区。
摘要由CSDN通过智能技术生成

分区描述

分区方式:postgresql10支持list和range分区,postgresql10以上支持list、range和hash分区
分区原理:分区表继承主表,但不完全继承主表属性,如唯一性约束、索引、主键、外键,而检查约束和非空约束可以继承
创建方法:①手动方法:创建主表时定义分区方式和分区键,再创建分区表②自动方法:创建主表,创建触发函数,再定义分区键为触发器,不需要手动创建
优劣:分区键值固定时,手动方法更好,插入数据时不需要触发判断,再分配到相应分区;分区键不固定时,自动方法更好,但性能受到影响

创建方法

本文以用户表为例,以创建时间年月为分区键

手动分区

手动分区定义part_time字段,保存创建时间年月,如’202008’,以list方式进行分区,分区键为part_time,创建主表末尾加入以下语句:PARTITION BY list(part_time)
创建主表

CREATE TABLE "t_user" (
  "uuid" varchar(36) COLLATE "pg_catalog"."default" NOT NULL,
  "dept_id" varchar(32) COLLATE "pg_catalog"."default",
  "user_name" varchar(32) COLLATE "pg_catalog"."default",
  "phone" varchar(32) COLLATE "pg_catalog"."default",
  "create_time" timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "part_time" varchar(6) COLLATE "pg_catalog"."default",
) PARTITION BY list(part_time);
COMMENT ON COLUMN "t_user"."uuid" IS '
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值