更新时间:2024-04-28 GMT+08:00

事务ID和快照

以下的函数在输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。

pgxc_is_committed(transaction_id)

描述:如果提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行,准备,冻结等)。

返回类型:bool

txid_current()

描述:获取当前事务ID。

返回类型:bigint

txid_current_snapshot()

描述:获取当前快照。

返回类型:txid_snapshot

txid_snapshot_xip(txid_snapshot)

描述:在快照中获取正在进行的事务ID。

返回类型:setof bigint

txid_snapshot_xmax(txid_snapshot)

描述:获取快照的xmax。

返回类型:bigint

txid_snapshot_xmin(txid_snapshot)

描述:获取快照的xmin。

返回类型:bigint

txid_visible_in_snapshot(bigint, txid_snapshot)

描述:在快照中事务ID是否可见(不使用子事务ID)。

返回类型:boolean

内部事务ID类型(xid)是32位,每40亿事务一次循环。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在表1

表1 快照组件

名字

描述

xmin

最早的事务ID(txid)仍然活动。所有较早事务将是已经提交可见的,或者是直接回滚。

xmax

作为尚未分配的txid。所有大于或等于此txids的都是尚未开始的快照时间,因此不可见。

xip_list

当前快照中活动的txids。这个列表只包含在xmin和xmax之间活动的txids;有可能活动的txids高于xmax。 介于大于等于xmin、小于xmax,并且不在这个列表中的txid,在这个时间快照已经完成的,因此按照提交状态查看他是可见还是回滚。这个列表不包含子事务的txids。

txid_snapshot的文本表示为:xmin:xmax:xip_list。

示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip_list=10, 14, 15。