Postgresql SQL查询在表的批更新过程中速度较慢

Postgresql SQL查询在表的批更新过程中速度较慢,postgresql,postgresql-9.3,Postgresql,Postgresql 9.3,我有一个postgresql表,大约有250K条记录。它每小时更新几次。但是,会删除整个表并添加新记录。(批处理作业) 我对这个过程没有多少控制权。在事务删除/重新加载表上的查询期间,基本上是锁定/挂起,直到作业完成。作业运行大约需要一分钟。我们有实时用户查看这些数据(这是带有时间滑块的地图上的空间数据)。他们很容易辨认丢失的记录 在更新过程中,是否可以对这60秒左右的查询时间做些什么。我曾考虑过加载到第二个表中,删除原始表并将第二个表重命名为原始表,但这会带来更多的错误。是否有任何设置只按原样

我有一个postgresql表,大约有250K条记录。它每小时更新几次。但是,会删除整个表并添加新记录。(批处理作业)

我对这个过程没有多少控制权。在事务删除/重新加载表上的查询期间,基本上是锁定/挂起,直到作业完成。作业运行大约需要一分钟。我们有实时用户查看这些数据(这是带有时间滑块的地图上的空间数据)。他们很容易辨认丢失的记录

在更新过程中,是否可以对这60秒左右的查询时间做些什么。我曾考虑过加载到第二个表中,删除原始表并将第二个表重命名为原始表,但这会带来更多的错误。是否有任何设置只按原样抓取数据,而不一定寻找一致的数据视图。
基本上只是想知道如何处理这种情况。 我正在运行postgresql 9.3.1
谢谢

您认为临时表解决方案会出现什么错误?如果您在事务中删除prod并将temp重命名为prod,则不存在错误风险。您将不得不等待使用该表的事务完成,并将锁定任何新的事务,但如果这些是短事务,那么我认为这不应该是一个问题。DDL可以在事务中处理吗?我想如果那是真的,那就行了。我担心投递表会被提交,然后后续命令会失败。。。但如果我能将它们一起进行事务处理,那么就可以了。看起来大多数DDL都可以在事务中处理。所以我想我会尝试这种方法。谢谢你验证我的想法!没问题。请记住,长时间的事务将产生锁定问题,但我认为无论怎样,删除/截断都会产生完全相同的问题。