首页 > 解决方案 > Postgres - 内置的自动和动态分区

问题描述

我已经(因为我使用 postgresql 9.6)按范围继承分区表

日期 2019-11-01 的分区如下所示:

client_id,product_id,date,orders
1,1,2019-11-01, 100
1,2,2019-11-01, 200
2,3,2019-11-01,150
2,4,2019-11-01,160 

我了解到,从 postgresql 10 开始,分区表可以以不同的方式处理和定义并内置

由于我当前继承的分区仅按日期不同,因此对于每个客户端,我有一个查询将从 X 分区中提取数据,这些分区包含所有客户端的数据。

我想知道我是否可以创建一个新的主表,该表将基于范围(日期)和客户端 ID(列表)具有“子表”,然后如果我查询 X 和 Y 之间范围的特定客户端,则执行程序将转到特定文档仅包括该客户端和该时间范围的数据。

我也想知道是否有简单的不需要像我今天那样为每个日期创建分区表。

谢谢。

标签: postgresql

解决方案


您可以使用子分区来做到这一点(分区表的分区本身可以被分区)但是这样做可能会导致分区数量的组合爆炸;这很可能适得其反。

我也想知道是否有简单的不需要像我今天那样为每个日期创建分区表。

不会。声明式分区不会自动为您创建分区。您仍然需要手动完成,或者编写脚本,或者创建触发器来完成它(IMO 不是一个好的选择)


推荐阅读