Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 为删除而分区时的Postgres分区查询性能_Postgresql_Partitioning - Fatal编程技术网

Postgresql 为删除而分区时的Postgres分区查询性能

Postgresql 为删除而分区时的Postgres分区查询性能,postgresql,partitioning,Postgresql,Partitioning,我们在Postgresql 12上,希望对一组表进行分区,这些表都与数据源名称相关。一个数据源可以有数千万条记录,整个数据集在2000个数据源中约占900GB的空间。我们没有一个很好的方法来更新这些记录,所以我们正在寻找一个完整的转储,并在需要更新源数据时重新加载。这就是为什么我们考虑使用分区,以便将新数据加载到新分区中,分离(稍后删除)当前包含数据的分区,然后使用最新数据附加新分区。查询将通过单个ID字段执行。我担心的是,由于我们是按源名称进行分区,并按分区定义中未使用的ID进行查询,因此我们

我们在Postgresql 12上,希望对一组表进行分区,这些表都与数据源名称相关。一个数据源可以有数千万条记录,整个数据集在2000个数据源中约占900GB的空间。我们没有一个很好的方法来更新这些记录,所以我们正在寻找一个完整的转储,并在需要更新源数据时重新加载。这就是为什么我们考虑使用分区,以便将新数据加载到新分区中,分离(稍后删除)当前包含数据的分区,然后使用最新数据附加新分区。查询将通过单个ID字段执行。我担心的是,由于我们是按源名称进行分区,并按分区定义中未使用的ID进行查询,因此我们将无法利用任何分区修剪,我们的查询将因此受到影响


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

性能将受到影响,但这将取决于分区的数量。分区越多,规划和执行时间就越慢,所以要保持低分区数


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

如果您的查询不包括分区键,那么是的,读取性能将比以前更差