PostgreSql分区操作

数据库表分区的优点有很多,也有很多文章有所介绍,本文就不赘述了
本文主要是提供数据库分表的操作步骤(也供自己将来需要时使用)

1.创建主表

通过指定PARTITION BY子句把measurement表创建为分区表,可选方法有:RANGELIST 点击查看二者的区别,此处以RANGE为例,以user_id进行分区

CREATE TABLE t_user(
    user_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (user_id);

建立分区主表时,不需要创建主键 点击查看详细原因,不需要建立索引。


2.创建分区

  • 每个分区的定义必须指定对应于父表的分区方法和分区键的边界。注意,如果指定的边界使得新分区的值会与已有分区中的值重叠,则会导致错误。向父表中插入无法映射到任何现有分区的数据将会导致错误。
  • 分区以普通PostgreSQL表(或者可能是外部表)的方式创建。可以为每个分区单独指定表空间和存储参数。
  • 没有必要创建表约束来描述分区的分区边界条件。相反,只要需要引用分区约束时,分区约束会自动地隐式地从分区边界说明中生成。
# user_id在1-10的数据存储在此分区
CREATE TABLE t_user_p1 PARTITION OF t_user
    FOR VALUES FROM ('1') TO ('100');

# user_id在10-20的数据存储在此分区
CREATE TABLE t_user_p2 PARTITION OF t_user
    FOR VALUES FROM ('100') TO ('200');

# user_id在20-30的数据存储在此分区
CREATE TABLE t_user_p3 PARTITION OF t_user
    FOR VALUES FROM ('200') TO ('300');

3.创建索引

在分区表的键列上创建一个索引,还有其他需要的索引(键索引并不是必需的,但是大部分场景中它都能很有帮助)。这会自动在每个分区上创建一个索引,并且后来创建或者附着的任何分区也将会包含索引

CREATE INDEX ON t_user(user_id);

4.插入数据

分区表创建完成,此时可以测试将数据插入

#插入数据,此数据将会被插入到p3分区中
INSERT INTO t_user VALUES(126, '2020-10-29', 0, 0);
#查询时,直接对主表进行查询,也可对p3查询
SELECT FROM t_user WHERE "user_id"=126;
SELECT FROM t_user_p3 WHERE "user_id"=126;

如果需要从一张已有数据的表导入数据,可以使用以下命令:

INSERT INTO t_user SELECT * FROM t_user_old;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值