首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在PostgreSQL中的UPDATE操作之后,行会转到最后一个位置?

为什么在PostgreSQL中的UPDATE操作之后,行会转到最后一个位置?
EN

Stack Overflow用户
提问于 2020-10-05 15:14:53
回答 1查看 371关注 0票数 1

我在某个嗅觉公司的面试中遇到了这个问题。现在我明白了这本身就是个错误的问题。

我的建议是,PostgreSQL复制行,然后删除前一行,即使用事务,然后根据系统隐藏索引对行进行排序。

他们说这不是一个正确的答案,但他们并没有说出正确的答案,因为面试就像在一个方向上高速的乒乓球。

我问过核心团队的人谁在IRC做PostgreSQL。他们说结果顺序可能是不可预测的,并且给了我C中非常低级别的PostgreSQL文档,所以我什么都不懂。

现在我找到了这样一条声明:https://www.postgresql.org/docs/current/sql-select.html

如果指定order子句,则返回的行按指定顺序排序。如果未给出ORDER,则按系统最快生成的顺序返回行。(见以下条文所订的命令)

好的,但是如果我们使用非常简单的表,而方案中没有任何关系,比如USER (id,name)。有什么意义?为什么更新后的行会出现在最后一个位置?面试时我应该回答什么?

EN

回答 1

Stack Overflow用户

发布于 2020-10-05 15:33:03

首先,不仅PostgreSQL,而且所有其他数据库,元组的顺序不能保证。当您进行插入时,每个元组都会被写入PostgreSQL中的页面。然后,将页面写入磁盘并遵循相应的文件系统机制。新更新的行不一定是最后一个位置,除非指定了ORDER。新更新的行出现在最后一个位置的原因可能是LRU替换策略是在该文件系统中采用的。

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

https://stackoverflow.com/questions/64211427

复制
相关文章

相似问题

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