2010-08-11 45 views
1

我知道当我在Pg中有一行时,该行被重写,并且当新行被激活时旧行被取消激活。我知道这是由于MVCC层是如何实现的。高级Postgres的INSERT/UPDATE速度下降了吗?

那么UPDATE优于DELETE ... INSERT的优势呢?在Postgresql中还有什么关于UPDATEDELETE的关系吗?我找不到任何有关这个或者邮件列表发布的文档。显然,他们运行不同的用户触发器(如果有的话),但是发生什么情况会给他们提供不同的性能配置文件?

+0

这不是一个答案,但请考虑,如果使用参照完整性(外键),则DELETE + INSERT可能会导致问题。 – 2010-08-11 15:28:57

回答

4

DELETE将触发外键约束,您可能会违反它们。其他触发器也可能是一个问题。

如果更改FILLFACTOR,还可以给数据库选项以执行HOT update。这是与原始记录所在位置相同的内存块内的更新。作为正常更新,HOT更新可以更快并且产生更少的开销(真空)。

+1

附加信息:HOT更新只能在更新的所有字段不是任何索引的一部分时才会发生。 – 2010-08-11 18:32:17