postgresql的数据表分区

当数据表数据量较大时,pg数据库的存取性能会有较大的下降,因此官方建议当一个数据表的大小接近物理内存大小的时候,就应该采取分表操作。
pg数据库官方支持两种分表方式,都是讲逻辑上的一个数据表,在磁盘上分区存储,一种是pg数据库自己维护的声明式分区,另一种自行维护的继承式分区。

声明式分区不需要自行维护分区界限,不需要自己编写插入逻辑,支持范围分区、列表分区、哈希分区,支持子分区,支持将现有数据表挂接为一个分区表的分区,

  1. 创建分区表

     CREATE TABLE measurement (
         city_id         int not null,
         logdate         date not null,
         peaktemp        int,
         unitsales       int
     )  PARTITION BY RANGE (logdate) ;
    
  2. 创建分区

     CREATE TABLE measurement_y2006m02 PARTITION OF measurement
         FOR VALUES FROM ('2006-02-01') TO ('2006-03-01');
     
     CREATE TABLE measurement_y2006m03 PARTITION OF measurement
         FOR VALUES FROM ('2006-03-01') TO ('2006-04-01');
     
     ...
     CREATE TABLE measurement_y2007m11 PARTITION OF measurement
         FOR VALUES FROM ('2007-11-01') TO ('2007-12-01');
     
     CREATE TABLE measurement_y2007m12 PARTITION OF measurement
         FOR VALUES FROM ('2007-12-01') TO ('2008-01-01')
         TABLESPACE fasttablespace;
     
     CREATE TABLE measurement_y2008m01 PARTITION OF measurement
         FOR VALUES FROM ('2008-01-01') TO ('2008-02-01')
         WITH (parallel_workers = 4)
         TABLESPACE fasttablespace;
    
  3. 打开分区优化开关

    enable_partition_pruning配置参数在postgresql.conf中没有被禁用

  4. 分区表维护:新增分区、删除分区…

继承式分区需要自行维护分区界限,需要自己通过触发器实现插入逻辑

  1. 创建主表
  2. 创建继承表
  3. 创建插入触发器 .

详见官方文档:
http://www.postgres.cn/docs/11/ddl-partitioning.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值