更新时间:2025-05-29 GMT+08:00

事务ID和快照

内部事务ID类型(xid)是64位。这些函数使用的数据类型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。

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

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)

描述:并发清理两阶段残留事务,调用该函数将返回false。

返回类型:Boolean

gs_get_next_xid_csn()

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

返回值如表2所示。

表2 gs_get_next_xid_csn返回参数说明

字段名

描述

nodename

节点名称。

next_xid

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

next_csn

当前节点下一个csn号。

pg_control_system()

描述:返回系统控制文件状态。

返回类型:SETOF record

pg_control_checkpoint()

描述:返回系统检查点状态。

返回类型:SETOF record

pv_builtin_functions

描述:查看所有内置系统函数信息。

参数:nan

返回值类型:proname name, pronamespace oid, proowner oid, prolang oid, procost real, prorows real, provariadic oid, protransform regproc, proisagg boolean, proiswindow boolean, prosecdef boolean, proleakproof boolean, proisstrict boolean, proretset boolean, provolatile "char", pronargs smallint, pronargdefaults smallint, prorettype oid, proargtypes oidvector, proallargtypes integer[], proargmodes "char"[], proargnames text[], proargdefaults pg_node_tree, prosrc text, probin text, proconfig text[], proacl aclitem[], prodefaultargpos int2vector, fencedmode boolean, proshippable boolean, propackage boolean, oid oid

pv_thread_memory_detail

描述:返回各线程的内存信息。多租场景下,non-PDB调用该函数时返回全部信息,PDB调用该函数时返回空列表。

参数:nan

返回值类型:threadid text, tid bigint, thrdtype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint

pg_relation_compression_ratio

描述:查询表压缩率,默认返回1.0。

参数:text

返回值类型:real

pg_relation_with_compression

描述:查询表是否压缩。

参数:text

返回值类型:boolean

pg_stat_file_recursive

描述:列出路径下所有文件。多租场景下,在PDB内部禁用。

参数:location text

pg_shared_memory_detail

描述:返回所有已产生的共享内存上下文的使用信息,各列描述请参考GS_SHARED_MEMORY_DETAIL

参数:nan

返回值类型:contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint

get_gtm_lite_status

描述:返回GTM上的backupXid和csn号,用来支持问题定位,GTM-FREE模式下不支持使用本系统函数,集中式不支持该函数。

gs_stat_get_wlm_plan_operator_info

描述:从内部哈希表中获取算子计划信息。

参数:oid

返回值类型:datname text, queryid int8, plan_node_id int4, startup_time int8, total_time int8, actual_rows int8, max_peak_memory int4, query_dop int4, parent_node_id int4, left_child_id int4, right_child_id int4, operation text, orientation text, strategy text, options text, condition text, projection text

pg_stat_get_partition_tuples_hot_updated

描述:返回给定分区id的分区热更新元组数的统计。

参数:oid

返回值类型:bigint

gs_session_memory_detail_tp

描述:返回会话的内存使用情况,参考gs_session_memory_detail。

参数:nan

返回值类型:sessid text, sesstype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint

gs_thread_memory_detail

描述:返回各线程的内存信息。

参数:nan

返回值类型:threadid text, tid bigint, thrdtype text, contextname text, level smallint, parent text, totalsize bigint, freesize bigint, usedsize bigint

pg_stat_get_wlm_session_iostat_info()

描述:返回会话负载I/O信息。

参数:nan

返回值类型:threadid bigint, maxcurr_iops integer, mincurr_iops integer, maxpeak_iops integer, minpeak_iops integer, iops_limits integer, io_priority integer, curr_io_limits integer

adm_hist_snapshot_func()

描述:返回快照执行时间相关信息,访问该函数需要打开enable_wdr_snapshot参数,并且需要snapshot schema, snapshot表和tables_snap_timestamp表的访问权限。

参数:nan

返回值类型:snap_id bigint, dbid oid, begin_interval_time timestamp(3), end_interval_time timestamp(3), flush_elapsed interval day(5) to second(1), begin_interval_time_tz timestamp(3) with time zone, end_interval_time_tz timestamp(3) with time zone

gs_get_current_version()

描述:依据当前编译宏返回当前编译模式,返回'P'。

参数:nan

返回值类型:char

gs_get_kernel_info()

描述:DN节点上的事务相关的信息。

返回值如表3所示。

表3 gs_get_kernel_info返回参数说明

名称

类型

描述

node_name

text

节点名。

module

text

模块名。包括:

  • XACT(事务模块)。
  • STANDBY(备机模块)。
  • UNDO(undo模块)。
  • HOTPATH(热补丁模块)。

name

text

探查内存态关键数据名字。包括:

  • startup_max_xid(线程启动时最大的xid值)。
  • recent_local_xmin(本地活跃事务最小xid值)。
  • recent_global_xmin(全局活跃事务最小xid值)。
  • standby_xmin(备机活跃事务最小xid值)。
  • standby_redo_cleanup_xmin(备机redo时cleanup日志最小xid值)。
  • standby_redo_cleanup_xmin_lsn(备机redo时cleanup日志最小xid的LSN值)。
  • local_csn_min(本地活跃事务最小CSN值)。
  • replication_slot_xmin(复制槽的最小xid值)。
  • replication_slot_catalog_xmin(catalog复制槽最小xid值)。
  • global_recycle_xid(全局undo回收事务的最小xid值)。
  • global_frozen_xid(全局冻结事务的最小的xid值)。
  • recent_xmin(当前会话活跃事务最小xid值)。
  • next_csn(下一个事务的CSN值)。
  • hotpatch_additional_info(热补丁预留字段)。
  • stmt_session_discard_records(内核支持全量SQL因slot满丢弃数据量)。
  • stmt_shm_flush_discard_records(内核支持全量SQL因ringbuf满丢弃数据量)。
  • idle_in_trans_timeout_records(内核支持空闲事务超时次数累计数据量)。

value

text

探查内存态关键数据值。

示例:

gaussdb=# SELECT * FROM gs_get_kernel_info();
  node_name   | module  |             name              |  value  
--------------+---------+-------------------------------+---------
 datanode1    | XACT    | startup_max_xid               | 16488
 datanode1    | XACT    | recent_local_xmin             | 15805
 datanode1    | XACT    | recent_global_xmin            | 15805
 datanode1    | STANDBY | standby_xmin                  | 0
 datanode1    | STANDBY | standby_redo_cleanup_xmin     | 0
 datanode1    | STANDBY | standby_redo_cleanup_xmin_lsn | 0/0
 datanode1    | XACT    | local_csn_min                 | 6014225
 datanode1    | XACT    | replication_slot_xmin         | 0
 datanode1    | XACT    | replication_slot_catalog_xmin | 0
 datanode1    | UNDO    | global_recycle_xid            | 15805
 datanode1    | XACT    | global_frozen_xid             | 0
 datanode1    | XACT    | recent_xmin                   | 15805
 datanode1    | XACT    | next_csn                      | 6014226
 datanode1    | HOTPATH | hotpatch_additional_info      | 
 datanode1    | FULL_SQL| stmt_session_discard_records  | 0
 datanode1    | FULL_SQL| stmt_shm_flush_discard_records| 0
 datanode1    | XACT    | idle_in_trans_timeout_records | 0
(17 row)