GaussDB 实验篇+openGauss的4种1级分区案例

✔ 范围分区/range分区

sql 复制代码
-- 创建表
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分区

sql 复制代码
-- 创建表
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分区

sql 复制代码
-- 创建表
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分区

sql 复制代码
-- 创建表
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;

※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

相关推荐
DarkAthena6 天前
【GaussDB】507内核版本新特性-视图失效重编译
gaussdb
神秘剑客_CN17 天前
openEuler 22.03安装openGauss 6.0
linux·opengauss·openeuler
Gauss松鼠会17 天前
【GaussDB】GaussDB锁阻塞源头查询
java·开发语言·前端·数据库·算法·gaussdb·经验总结
xuekai2008090117 天前
GaussDB 单机安装记录
gaussdb
Gauss松鼠会18 天前
Prometheus 实现 openGauss 的指标监控(二)Prometheus 中添加 openGauss指标
网络·数据库·oracle·prometheus·opengauss·经验总结
想你依然心痛20 天前
【金仓数据库征文】Oracle到金仓:分区表迁移及分区裁剪验证
分区表·执行计划·数据校验·金仓数据库·oracle迁移·范围分区·分区裁剪
DarkAthena1 个月前
【GaussDB】507内核新特性-PLSQL字节码(一)
gaussdb
DarkAthena1 个月前
【GaussDB】507内核新特性-PLSQL字节码(二)
gaussdb
DarkAthena1 个月前
【GaussDB】分析一个使用子查询进行update导致的coredump
gaussdb
Jane Chiu1 个月前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表