PostgreSQL 分区表怎么解析

发布时间:2022-01-04 09:49:12 作者:柒染
来源:亿速云 阅读:143

PostgreSQL 分区表怎么解析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

MYSQL 在分区表上的缺失不同,POSTGRESQL 的分区表那算是“硬可”。PG11 已经推出了HASH 分区。具体操作是怎样

首先分区表的大致用途有那些

1  在符合业务的基础上,能对合理的预设的查询提高查询的速度

2  在符合业务的基础上,能对数据的插入降低热点块的竞争,提高插入速度

3  在某些场合合理的访问分区可能顺序的扫描分区内的数据比使用分区内的索引更能提高数据访问的性能。

4  合理的设置分区,会更方便处理无用的数据,统一将一个分区内的数据进行处理。

目前 POSTGRESQL 支持的分区方式有

1   Range Partitiioning

2   List Partitioning

3   Hash Partitioning

与ORACLE 差不多的是,每个分区也是可以有自己的子分区的索引,默认值,或者一些其他定义。

另外一件事情是分区这个事情是需要有预先的设计的,而不是在系统的数据库表已经运行了好长一段时间后,在去做分区表。所以在系统设计之初就做好设计工作是重要的。

下面我们就来做点什么

1 HASH Partitioning  这是在 PG 11 中的新功能 ,通过HASH partitioning 可以加速数据的插入,这也是ORACLE DBA 引以为豪的傲娇点。

下面建立一个HASH分区表,这里已BIGINT 为主键,插入的主键除以10后余数来选择记录的落点。

后面直接插入20万数据不到1 秒就完成了

PostgreSQL 分区表怎么解析

我们来看看插入的数据,基本上都打散了。

PostgreSQL 分区表怎么解析

查询也是没有问题,走了主键的索引

PostgreSQL 分区表怎么解析

而清除一个分区表的数据也很简单,直接删除那个表就可以了

PostgreSQL 分区表怎么解析

如果想继续恢复那个分区也是很容易的事情

当然如果你想保留数据分区表的部分数据,但又不想他成为分区表中的一员也很简单。

PostgreSQL 分区表怎么解析

同时PostgreSQL 也同样支持range 分区的类型,通过range 类型的分区可以根据已经设计好的日期,或者其他表中的行数据进行划分,进行分区表存储。

废话不说,建立相关的表和分区表

PostgreSQL 分区表怎么解析

在建立日期类型的分区表中,要注意到to 是不包含后面指定的时间段,如果设置成 from ('2008-01-01') to ('2008-12-31')  下一个range 设置成 from ('2019-01-01') to ('2019-12-31') 则在插入数据的时候会报

no partition of relation found for row

的问题。

另一个问题是,建立分区表的时候(Postgresql 不建议建立主键,这样会引起以后必要的麻烦,如果需要可以建立唯一索引)

创建一个存储过程来进行数据的插入,看看分区表是否有问题

create or replace procedure insert_data()

language plpgsql

as $$

declare 

date_value timestamp;

declare id int;

begin

date_value := '2007-01-01 00:00:00'::timestamp + '1 hour';

id = 1;

while id < 400000 loop

insert into range_test (password,insert_date) (select id::char(48),date_value::timestamp);

id = id + 1;

date_value  := date_value::timestamp + '1 hour';

end loop;

end;

$$;

PostgreSQL 分区表怎么解析

通过图中的两条语句来进行数据的验证,没有问题。

根据查询的要求我们还可以建立相关的分区索引

PostgreSQL 分区表怎么解析

当然如果全表查询,也可以走全局的索引

PostgreSQL 分区表怎么解析

看完上述内容,你们掌握PostgreSQL 分区表怎么解析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. PostgreSQL从继承到分区(三)
  2. postgresql查询分区表的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

postgresql

上一篇:Lua v5.4.0及之前版本lsys_load()栈溢出漏洞的示例分析

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》