在PostgreSql中,哪个效率更高的批量更新或删除?

在我的Java Web应用程序中,我需要从表中删除一组记录。我有2个选择:

  1. 直接从应用程序中运行删除查询
  2. 更新所有记录中的值以将其从用户视图中隐藏,并让守护程序线程运行并在后台清理这些记录。

记录数范围可以从10到100000。 我的目的是了解在不增加服务器负载的情况下进行此操作的有效且安全的方法。

P.S .:随时分享任何其他合适的方法。

qiaoshai 回答:在PostgreSql中,哪个效率更高的批量更新或删除?

在后台,UPDATE实际上是:

  1. 将已更新的行标记为已删除
  2. 插入新行,它是上述1.中的行的副本,但反映了更新的列

因此,由于UPDATE操作涉及两次写入,因此DELETE实际上更有效,因为它仅使用一次写入来标记已删除的行(由于多版本并发控制(MVCC) )框架)

披露:我为EnterpriseDB (EDB)工作

,

与删除命令相比,更新命令花费更多的时间。在更新中,您实际上是在复制数据,而旧版本的数据只是从视图中隐藏了。

,

如果将来需要这些记录,可以将这些记录移到另一个表中。

此方法的优点是:-

  1. 您没有使当前表超载,因此该表的所有操作将很快。
  2. 您将来可以使用这些记录。

更新

由于您不需要记录,并且由于更新更昂贵,因此删除,您应该批量发出删除调用,例如说500至5000条记录。

本文链接:https://www.f2er.com/3142302.html

大家都在问