
# 事务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]。
txid_snapshot的文本表示为：xmin:xmax:xip_list。
例如，10:20:10,14,15表示：xmin=10, xmax=20, xip_list=10, 14, 15。
 表1快照组件 
| 名字       | 描述                                                                                                                                              |
|:---|:---|
| xmin     | 最早的事务ID（txid）仍然活动。所有较早事务将是已经提交可见的，或者是直接回滚。                                                                                                      |
| xmax     | 作为尚未分配的txid。所有大于或等于此txids的都是尚未开始的快照时间，因此不可见。                                                                                                    |
| xip_list | 当前快照中活动的txids。这个列表只包含在xmin和xmax之间活动的txids；有可能活动的txids高于xmax。 介于大于等于xmin、小于xmax，并且不在这个列表中的txid，在这个时间快照已经完成的，因此按照提交状态查看他是可见还是回滚。这个列表不包含子事务的txids。 |
   
#### pgxc_gtm_txn_status()
描述：获取GTM上当前所有事务的信息。该函数仅9.1.1.300及以上集群版本支持。
表2pgxc_gtm_txn_status()返回字段 
| 名称         | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| slotnum    | integer | GTM上的槽位号。                                                                                                                                                                                                                                                                                                                                                                        |
| threadid   | bigint  | GTM上的线程号。                                                                                                                                                                                                                                                                                                                                                                        |
| gxid       | xid     | 全局事务ID。                                                                                                                                                                                                                                                                                                                                                                          |
| state      | test    | 事务状态。                                                                                                                                                                                                                                                                                                                                                                            |
| xmin       | xid     | 最小事务ID。                                                                                                                                                                                                                                                                                                                                                                          |
| xmax       | xid     | 最大事务ID。                                                                                                                                                                                                                                                                                                                                                                          |
| isolevel   | test    | 事务的隔离级别。 - read committed：读已提交隔离级别。  - repeatable read：可重复读隔离级别。   |
| isreadonly | boolean | 是否是只读事务。                                                                                                                                                                                                                                                                                                                                                                         |
| isvacuum   | boolean | 是否是Vacuum事务。                                                                                                                                                                                                                                                                                                                                                                     |
   
示例：
```
SELECT * FROM pgxc_gtm_txn_status();                                                                                   
 slotnum |    threadid     |     gxid     |  state   |     xmin     |     xmax     |    isolevel     | isreadonly | isvacuum      
---------+-----------------+--------------+----------+--------------+--------------+-----------------+------------+----------     
      10 | 140491592591104 |            0 | STARTING | 132507422568 |            0 | read committed  | f          | f             
       9 | 140491584186112 | 132507422574 | STARTING | 132507422568 | 132507422574 | read committed  | f          | f             
       6 | 140491588388608 | 132507422568 | STARTING | 132507422567 | 132507422568 | repeatable read | f          | f             
(3 rows)
```
