gpt4 book ai didi

postgresql - 给定交易中其他交易的可见性

转载 作者:行者123 更新时间:2023-11-29 14:29:34 25 4
gpt4 key购买 nike

Postgres 如何根据隔离级别决定哪些事务对给定事务可见?

我知道 Postgres 使用 xminxmax 并将其与 xid 进行比较,但我没有找到具有适当细节的文章。

你知道引擎盖下的过程吗?

最佳答案

这取决于当前的快照

READ COMMITTED 事务为每个查询拍摄新的快照,而 REPEATABLE READSERIALIZABLE 事务在第一个查询运行时拍摄快照并在整个交易期间保留它。

快照在 include/utils/snapshot.h 中定义为 struct SnapshotData 并且主要包含以下内容:

  • 一个最小的交易 ID xmin:所有旧交易对该快照可见。

  • 最大交易 ID xmax:所有后续交易对该快照不可见。

  • 一组交易 ID xid,其中包含对此快照不可见的所有中间交易。

要确定一个元组是否对快照可见,它的xmin 必须是一个可见的已提交事务 ID,并且它的 xmax 不能是一个已提交的事务 ID可见。

要确定事务是否已提交,必须查阅提交日志,除非元组的提示位(缓存该信息)已经被提交设置。

关于postgresql - 给定交易中其他交易的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53752119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com