首页 > 解决方案 > 分区删除时的 Postgres 分区查询性能

问题描述

我们在 Postgresql 12 上,并希望对一组全部按数据源名称相关的表进行分区。一个源可以有数千万条记录,整个数据集在 2000 个数据源中占大约 900GB 的空间。我们没有更新这些记录的好方法,因此我们正在查看完整转储并在需要更新源数据的任何时候重新加载。这就是我们考虑使用分区的原因,因此我们可以将新数据加载到新分区中,分离(然后删除)当前包含数据的分区,然后将新分区附加到最新数据。查询将通过单个 ID 字段执行。我担心的是,由于我们按源名称进行分区并按分区定义中未使用的 ID 进行查询,因此我们不会

我们应该如何关注这个用例的查询性能?将在被查询的 ID 上定义一个索引,但根据 Postgres 文档,它可能会增加大量计划时间并使用大量内存来为查看许多分区的查询提供服务。

标签: postgresqlpartitioning

解决方案


性能会受到影响,但这将取决于分区的数量。您拥有的分区越多,计划和执行时间就越慢,因此请保持较低的数字。

您可以通过定义准备好的语句并重用它来节省查询计划时间。


推荐阅读