首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们更新Postgres表中的记录时,后台会发生什么?

问当我们更新Postgres表中的记录时,后台会发生什么?
EN

Database Administration用户
提问于 2016-11-05 09:51:49
回答 1查看 207关注 0票数 1

我有一张桌子像company,

代码语言:javascript
复制
id  |  name  | age | address   | salary
----+--------+-----+-----------+--------
 1  | Ganesh |  32 | Chennai   |  20000
 2  | Allen  |  25 | Chennai   |  15000
 3  | Teddy  |  23 | Chennai   |  20000
 4  | Mark   |  25 | Chennai   |  65000
 5  | Paul   |  32 | Chennai   |  20000
 6  | Allen  |  25 | Chennai   |  15000
 7  | Teddy  |  23 | Chennai   |  20000
 8  | Paul   |  32 | Chennai   |  20000
 9  | Allen  |  25 | Chennai   |  15000
 10 | Teddy  |  23 | Chennai   |  20000

现在,在后台,当我更新这个表中的任何一个(或更多)记录(S)时,会发生什么?

代码语言:javascript
复制
update company set address = 'California' where id = 5;

我真正怀疑的是,它是会删除整条旧纪录,然后用给定的值新插入一条纪录,还是只会取代指定列中的给定值?

如果记录被删除以便更新,那么内存仍然在那里吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-11-05 10:04:48

通常,更新将创建一个新的行版本以支持MVCC。这种情况在某些条件下可能不会发生,例如,如果更新不更改任何索引列。

旧行版本占用的空间将由自动真空过程释放,并在没有更多事务将看到该版本时重新用于新数据。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/154350

复制
相关文章

相似问题

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