小编Not*_*hor的帖子

处理 PARTITION BY RANGE 上超出范围的值

我有一个用于存储事件的表,该表timestamptz使用按月按列分区PARTITION BY RANGE

目前有 5 个分区,每个分区包含一个月的跨度,从 开始FOR VALUES FROM ('2018-01-01') TO ('2018-02-01')到结束FOR VALUES FROM ('2018-05-01') TO ('2018-06-01')

大多数数据都是以线性且可预测的方式输入的。但是,事件由报告事件的应用程序消耗,并且我确实必须允许随时输入过去的事件 - 其时间戳可能早于2018-01-01,甚至是未来的事件(例如预计的费用)发生在未来的某个时间)。

我计划为过去的事件创建一个分区,这些事件的跨度将超过一个月,因为预计不会有太多此类事件。

我不确定对于尚未存在分区的未来事件的最佳方法是什么。

有没有办法获取我可以在现有分区中存储的最小/最大值?如果没有,我可以创建一个参考表来存储这些值,但我宁愿不必维护它。

我应该创建一个触发器来检查插入的每一行(看起来很昂贵)吗?我应该捕获插入错误并一次处理这些错误吗?

运行于PostgreSQL 10.3.

postgresql partitioning plpgsql postgresql-10

3
推荐指数
1
解决办法
1894
查看次数

标签 统计

partitioning ×1

plpgsql ×1

postgresql ×1

postgresql-10 ×1