? 范圍分區/range分區
-- 創建表
drop table if exists zzt.par_range;
create table if not exists zzt.par_range (empno integer,ename char(10),job char(9),mgr integer(4),hiredate date,sal numeric(7,2),comm numeric(7,2),deptno integer,constraint pk_par_emp primary key (empno,deptno)
) tablespace ts_zzt
partition by range(deptno) --分區鍵必須在主鍵中
(
PARTITION P1 VALUES LESS THAN(11),
PARTITION P2 VALUES LESS THAN(21),
PARTITION P3 VALUES LESS THAN(31)
)
ENABLE ROW MOVEMENT;
-- 插入數據
insert into zzt.par_range select * from zzt.emp;
-- 查驗
select * from zzt.par_range partition(p1);
select * from pg_catalog.pg_partition p order by p.parentid,p.relfilenode;
? 間隔分區/interval分區
-- 創建表
drop table if exists zzt.par_inter;
create table if not exists zzt.par_inter ( id serial, time DATE,others varchar(20))
PARTITION BY RANGE (time)
INTERVAL('1 day')( PARTITION p1 VALUES LESS THAN (TO_DATE('2021-1-2', 'YYYY-MM-DD')),PARTITION p2 VALUES LESS THAN (TO_DATE('2021-1-3', 'YYYY-MM-DD')),PARTITION p3 VALUES LESS THAN (TO_DATE('2021-1-4', 'YYYY-MM-DD')));
-- 插入數據
insert into zzt.par_inter values(1,to_date('2021-01-01 10:00:00','yyyy-mm-dd hh24:mi:ss'),'a'); --由于是less than所以分區大1天
insert into zzt.par_inter values(2,to_date('2021-01-20 20:00:00','yyyy-mm-dd hh24:mi:ss'),'a'); --測試自動分區的跨天能力
insert into zzt.par_inter values(3,to_date('2021-01-20 10:00:00','yyyy-mm-dd hh24:mi:ss'),'a'); --測試自動分區的跨天能力
insert into zzt.par_inter values(4,to_date('2022-02-02 10:00:00','yyyy-mm-dd hh24:mi:ss'),'a'); --測試自動分區的跨年能力
insert into zzt.par_inter values(5,to_date('2023-03-03 10:00:00','yyyy-mm-dd hh24:mi:ss'),'a'); --測試自動分區的跨年能力
commit;
-- 查驗
select * from zzt.par_inter partition(p1);
select * from pg_catalog.pg_partition p order by p.parentid,p.relfilenode;
? 哈希分區/hash分區
-- 創建表
drop table if exists zzt.par_hash;
create table if not exists zzt.par_hash (empno integer,ename char(10),job char(9),mgr integer(4),hiredate date,sal numeric(7,2),comm numeric(7,2),deptno integer
) tablespace ts_zzt
partition by hash(deptno)
(
PARTITION p1,
PARTITION p2,
PARTITION p3
);
-- 插入數據
insert into zzt.par_hash select * from zzt.emp;
-- 查驗
select * from zzt.par_hash partition(p1);
select * from pg_catalog.pg_partition p order by p.parentid,p.relfilenode;
? 列表分區/list分區
-- 創建表
drop table if exists zzt.par_list;
create table if not exists zzt.par_list (empno integer,ename char(10),job char(9),mgr integer(4),hiredate date,sal numeric(7,2),comm numeric(7,2),deptno integer
) tablespace ts_zzt
partition by list(deptno)
(
PARTITION p1 values(10),
PARTITION p2 values(20),
PARTITION p3 values(30)
);
-- 插入數據
insert into zzt.par_list select * from zzt.emp;
-- 查驗
select * from zzt.par_list partition(p1);
select * from pg_catalog.pg_partition p order by p.parentid,p.relfilenode;
※ 如果您覺得文章寫的還不錯,?別忘了在文末給作者點個贊哦 ~