分区描述
分区方式: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 '