首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql的冲突更新会产生大量的死元组吗?

postgresql的冲突更新会产生大量的死元组吗?
EN

Stack Overflow用户
提问于 2018-07-15 04:28:30
回答 0查看 462关注 0票数 1

我们有一个从一个postgres表到另一个postgres表的ETL过程,在这个过程中,我们使用INSERT / ON冲突DO UPDATE方法将一个大型数据集本质上合并到一个现有的数据集,使用对一些列的唯一约束作为冲突检查器。

当插入新行并发生冲突时,我们在现有行上更新一些列,但大部分情况下保持不变。在许多情况下,插入的行集将与现有行冲突,因此整个语句基本上就是合并那些成对列中的新值,但没有插入任何实际的新行。

查看pg_stat_user_tables,我们注意到这种策略会导致大量需要清理的死元组出现。这是违反直觉的,因为有人会假设冲突只是导致对现有行的更新,但没有创建或删除死行,但来自pg_stat_user_tables的统计数据似乎与此相矛盾。

相反,如果我们把所有的语句都改成ON CONFLICT什么也不做,那么这个死元组问题就会消失。

使用ON CONFLICT DO UPDATE会导致大量的死元组堆积,这是正常的吗?

我们使用的是postgres 9.5和9.6,尽管两者的行为似乎是一样的。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51343122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档