美文网首页
openGauss 2.0.1 分区表

openGauss 2.0.1 分区表

作者: 花雨归来 | 来源:发表于2022-10-11 13:12 被阅读0次

    本文适用于openGauss 2.0.1版本(对应postgresql 9.2.4),可以用select version();查看版本。

    一、创建分区表

    注:分区键必须在主键中。

    varchar(8) 日期类型

    create table {table_name}
    (
        field1 varchar(32) not null,
        field2 varchar(8) not null,
        field3 numeric(20, 2) not null,
        field4 char(1),
        field5 numeric(9),
        field timestamp(3) not null,
        constraint {table_name}_pkey primary key (field1, field2)
    ) partition by range (field2) (
        partition p202201 values less than('20220201'),
        partition p202202 values less than('20220301')
    );
    

    timestamp 时间戳类型

    create table {table_name}
    (
        field1 varchar(32) not null,
        field2 timestamp not null,
        field3 numeric(20, 2) not null,
        field4 char(1),
        field5 numeric(9),
        constraint {table_name}_pkey primary key (field1, field2)
    ) partition by range (field2) (
        partition p202201 values less than(to_date('20220201', 'yyyymmdd')),
        partition p202202 values less than(to_date('20220301', 'yyyymmdd'))
    );
    

    二、创建分区索引

    create index idx_{table_name}_field2 on {table_name} (field2) local;
    

    三、查询指定分区

    select * from {table_name} partition (p202201);
    

    四、添加分区

    varchar(8) 日期类型

    alter table {table_name} add partition p202203 values less than('20220401');
    

    timestamp 时间戳类型

    alter table {table_name} add partition p202203 values less than(to_date('20220401', 'yyyymmdd'));
    

    五、删除分区

    alter table {table_name} drop partition p202201;
    

    六、查询所有分区

    select b.relname, a.relname as relname_par, a.boundaries
    from pg_partition a join pg_class b on (a.parentid = b.oid)
    where a.parttyppe = 'p' and b.relname = '{table_name}'
    order by relname_par;
    

    七、查询建表语句

    select * from pg_catalog.pg_get_tabledef('{table_name}');
    

    八、分区分裂

    将分区p21000101'20230224'左右切分成两块,然后重命名

    alter table {table_name} split partition p21000101 at ('20230224') into (partition p20230224, partition p21000102);
    alter table {table_name} rename partition p21000102 to p21000101;
    

    相关文章

      网友评论

          本文标题:openGauss 2.0.1 分区表

          本文链接:https://www.haomeiwen.com/subject/vlvtzrtx.html