PostgreSQL V10 分区表特性
发布日期:2021-05-08 12:28:23 浏览次数:18 分类:精选文章

本文共 1999 字,大约阅读时间需要 6 分钟。

PostgreSQL 10 分区表的理解与使用

环境

  • 系统平台:N/A
  • 版本:10.3

文档用途

分区表特性

PostgreSQL V10 将分区表作为一个重要的新特性引入,相较于之前的版本(通过“继承表+约束+规则或触发器”实现分区),PG10的分区具有显著优势。

PG10 分区优势

  • 管理分区方便
  • 数据插入效率高
  • 实质特性

    PG10的分区表基于内置继承表实现,分区实质上仍为普通表结构,主要区别在于分区逻辑和管理方式。

    分区类型

    目前PG10支持范围分区和列表分区,哈希分区尚未实现。

    范围分区

    创建主表语法

    CREATE TABLE 表名 ( [{ 列名称 数据_类型 } [, ... ] ] )
    PARTITION BY RANGE ( [{ 列名称 } [, ... ] ] );

    创建分区语法

    CREATE TABLE 表名 PARTITION OF 主表 FOR VALUES
    FROM { 表达式 [, ...] } | MINVALUE [, ...]
    TO { 表达式 [, ...] } | MAXVALUE [, ...] [ TABLESPACE 表空间名 ];

    参数说明

    • FROM ... TO 表示分区的值范围,MINVALUE 表示无限小值,MAXVALUE 表示无限大值。
    • FROM 后的值包含在分区,TO 后的值不包含。

    示例

    postgres=# create table test(n int) partition by range(n);
    postgres=# create table test_1 partition of test for values from (MINVALUE) to (10);
    postgres=# create table test_2 partition of test for values from (10) to (100);
    postgres=# create table test_3 partition of test for values from (100) to (1000);
    postgres=# create table test_4 partition of test for values from (1000) to (10000);

    列表分区

    创建主表语法

    CREATE TABLE 表名 ( [{ 列名称 数据_类型 } [, ... ] ] )
    PARTITION BY LIST ( [{ 列名称 } ] );

    创建分区语法

    CREATE TABLE 表名 PARTITION OF 主表 FOR VALUES IN ( { 表达式 [, ...] } );

    示例

    postgres=# CREATE TABLE sales (product_id int, saleroom int, province text) PARTITION BY LIST(province);
    postgres=# CREATE TABLE sales_east PARTITION OF sales FOR VALUES IN ('山东', '江苏', '上海');
    postgres=# CREATE TABLE sales_west PARTITION OF sales FOR VALUES IN ('山西', '陕西', '四川');
    postgres=# CREATE TABLE sales_north PARTITION OF sales FOR VALUES IN ('北京', '河北', '辽宁');
    postgres=# CREATE TABLE sales_south PARTITION OF sales FOR VALUES IN ('广东', '福建');

    系统信息

    分区信息系统表

    • pg_partitioned_table 记录主表信息。
    • pg_class 中的相关字段记录分区信息。

    分区函数

    • pg_get_partkeydef(Oid relid):获取分区键定义。
    • pg_get_partition_constraintdef(Oid relid):获取分区约束条件。

    其他操作

    ATTACH 操作

    • 范围分区

      ALTER TABLE 主表名 ATTACH PARTITION 表名 FOR VALUES FROM { 表达式 [, ...] } | MINVALUE [, ...]
      TO { 表达式 [, ...] } | MAXVALUE [, ...];
    • 列表分区

      ALTER TABLE 主表名 ATTACH PARTITION 表名 FOR VALUES IN ( { 表达式 [, ...] } );

    更多操作示例请参考【瀚高技术支持平台】。

    上一篇:HGDB4.1.1在RHEL6.x中安装和卸载指导手册
    下一篇:范围类型

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月26日 09时23分56秒