云数据库 GAUSSDB-系统信息函数:事务ID和快照

时间:2024-11-13 14:46:34

事务ID和快照

内部事务ID类型(xid)是64位。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述如表13所示。
表13 快照组件

名称

描述

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。

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

  • pgxc_is_committed(transaction_id)

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

    返回类型:Boolean

  • pgxc_is_committed(transaction_id, bucketid)

    描述: 当前版本集中式不支持hashbucket 表,该接口函数调用报错。

  • txid_current()

    描述:获取当前事务ID。

    返回类型:bigint

  • gs_txid_oldestxmin()

    描述:获取当前最小事务id的值oldesxmin。

    返回类型: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

  • get_local_prepared_xact()

    描述:获取当前节点两阶段残留事务信息,包括事务id、两阶段gid名称、prepared的时间、owner的oid、database的oid及当前节点的node_name。

    返回类型:xid, text, timestamptz, oid, text

  • get_remote_prepared_xacts()

    描述:获取所有远程节点两阶段残留事务信息,包括事务id、两阶段gid名称、prepared的时间、owner的名称、database的名称及node_name。

    返回类型:xid, text, timestamptz, name, text

  • global_clean_prepared_xacts(text, text)

    描述:并发清理两阶段残留事务,仅 GaussDB 分布式场景下gs_clean工具可以调用清理,其他用户调用均返回false。

    返回类型:Boolean

  • gs_get_next_xid_csn()

    描述:返回全局所有节点上的next_xid和next_csn值。

    返回值如表14所示。

    表14 gs_get_next_xid_csn返回参数说明

    字段名

    描述

    nodename

    节点名称。

    next_xid

    当前节点下一个事务id号。

    next_csn

    当前节点下一个csn号。

support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0380.html