哪一个应该先完成,在postgreql数据库中选择或更新?

时间:2016-04-25 13:19:11

标签: database postgresql

如果ABC表更新在同一点运行,那么select也开始在同一个表上运行,在postgresql中会先占用吗?

1 个答案:

答案 0 :(得分:0)

好的,我想我知道你在问什么。

当您更新某些内容时,在您提交该交易之前,其他任何内容都不会显示。当您更新某些内容并且需要一段时间时,它不应该阻止对相同内容的任何选择。

因此,如果您开始10分钟的更新,然后有人开始他们的2分钟选择,他们将看到旧数据,并且不会被阻止。更新将继续,不会中断。更新完成后,如果有人再次启动2分钟选择,他们将看到新数据。

这会回答你的问题吗?

如果您感兴趣,原因是postgresql使用MVCC。基本上这意味着当您更新行时,会写入这些行的新副本。在新副本上,postgres指示哪些事务可以查看新数据。旧的数据很好,并且还有关于什么交易可以看到它的信息。

当您选择时,postgres会检查表格,并查看当前事务中您可以看到哪些行。它只返回你可以看到的行。

当没有更多的交易可以看到一行时,postgres知道它可以被删除,并将收回该空间。