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;

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

相关推荐
DarkAthena9 小时前
【GaussDB】 keep聚合SQL 性能优化分析:从 123s 到 18s 的优化之路
gaussdb
DarkAthena1 天前
【GaussDB】排查报错“ERROR: Plpgsql estate is null“
gaussdb
DarkAthena1 天前
【DuckDB】一条 SQL 同时连接 Oracle 和 GaussDB
oracle·gaussdb·duckdb
Gauss松鼠会3 天前
GaussDB(DWS) 日常维护命令
服务器·数据库·postgresql·性能优化·gaussdb·经验总结
Gauss松鼠会3 天前
GaussDB(DWS) GUC参数修改、查看
java·数据库·sql·数据库开发·gaussdb
UtopianCoding3 天前
数据库语法对比详细规则
数据库·mysql·gaussdb
Gauss松鼠会3 天前
GaussDB(DWS) 资源监控Topsql
java·网络·数据库·算法·oracle·性能优化·gaussdb
Gauss松鼠会5 天前
【GaussDB】基于SpringBoot实现操作GaussDB(DWS)的项目实战
java·数据库·经验分享·spring boot·后端·sql·gaussdb
Gauss松鼠会5 天前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
DarkAthena10 天前
【GaussDB】讨论下for update游标加锁的设计
gaussdb