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;

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

相关推荐
Gauss松鼠会20 小时前
GaussDB应用场景全景解析:从金融核心到物联网的分布式数据库实践
数据库·分布式·物联网·金融·database·gaussdb
若兰幽竹2 天前
基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
人工智能·大模型·opengauss·deepseek
DarkAthena7 天前
【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
数据库·gaussdb
Gauss松鼠会7 天前
GaussDB权限管理:从RBAC到精细化控制的企业级安全实践
大数据·数据库·安全·database·gaussdb
DCTANT8 天前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
.不吃糖.18 天前
MySQL 与 Oracle 分区表详解:相同点与不同点
数据库·mysql·oracle·etl·分区表
喝着咖啡敲代码1 个月前
GaussDB创建数据库存储
gaussdb
Gauss松鼠会1 个月前
GaussDB分布式数据库调优方法总结:从架构到实践的全链路优化指南
数据库·分布式·sql·database·gaussdb
我在北京coding1 个月前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
Gauss松鼠会1 个月前
ElasticSearch迁移至openGauss
大数据·数据库·elasticsearch·jenkins·opengauss·gaussdb