事务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。
名字 |
描述 |
---|---|
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。