# Undo系统函数
如需确认当前回滚段使用的存储方式，可以通过查询gs_global_config系统表的undostoragetype字段确认：segpage表示段页式，预留参数，暂不支持；page表示页式。
示例：
```
gaussdb=# SELECT * FROM gsd_global_config where name like '%undostoragetype%';
      name       |  value
-----------------+---------
 undostoragetype |  page
(1 row)
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
Undo系统函数DN上执行，不支持在CN上执行。
- gs_undo_meta(type, zoneId, location) 描述：Undo模块元信息。
  参数：
  - type(元信息类型)
    - 0：表示UndoZone(Record) 对应的元信息。
    
    - 1：表示UndoZone(Transaction Slot) 对应的元信息。
    
    - 2：表示UndoSpace(Record) 对应的元信息。
    
    - 3：表示UndoSpace(Transaction Slot) 对应的元信息。
     
  
  - zoneId(UndoZone编号)
    - -1：表示所有UndoZone的元信息。
    
    - 0\~1024\*1024-1：表示对应ZoneID的元信息。
     
  
  - location(读取位置）
    - 0：表示从当前内存中读取。
    
    - 1：表示从物理文件中读取。
     
  
  
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  表1gs_undo_meta参数说明 
  | 参数类型 | 参数名          | 类型     | 描述                               |
  |:---|:---|:---|:---|
  | 输出参数   | zoneId        | oid   | UndoZone的ID。                    |
  | 输出参数  | persistType | oid   | 持久化级别。                          |
  | 输出参数   | insert       | text | 下一条插入的Undo记录位置。                 |
  | 输出参数  | discard       | text | 普通回收到的Undo记录位置。                 |
  | 输出参数    | end            | text | 强制回收掉的Undo记录位置，小于它的Undo记录已经被回收。 |
  | 输出参数    | used        | text  | 已经使用的Undo空间。                     |
  | 输出参数  | lsn           | text | 修改UndoZone的LSN。                 |
  | 输出参数    | pid          | oid  | UndoZone绑定的线程ID。               |
     
  
- gs_undo_translot(location, zoneId) 描述：Undo事务槽信息。
  参数：
  - location(读取位置)
    - 0：表示从当前内存中读取。
    
    - 1：表示从物理文件中读取。
     
  
  - zoneId(UndoZone编号)
    - -1：表示所有UndoZone的元信息。
    
    - 0\~1024\*1024-1：表示对应ZoneID的元信息。
     
  
  
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  表2gs_undo_translot参数说明 
  | 参数类型   | 参数名            | 类型  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|
  | 输出参数     | groupId        | oid | 使用的UndoZone ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | 输出参数   | xactId        | text | 事务ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | 输出参数 | startUndoPtr | text  | Transaction Slot对应事务起始插入Undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数     | endUndoPtr    | text | Transaction Slot对应事务结束插入Undo记录位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数    | lsn          | text | 对应Transaction Slot指针。                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数   | slot_states   | oid  | 事务状态。 - 0表示已经提交。  - 1表示正在执行中。  - 2表示回滚中。  - 3表示回滚完成。   |
     
  

- gs_stat_undo(\[bool init\]) 描述：Undo统计信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
   表3gs_stat_undo页式参数说明 
  | 参数类型    | 参数名                    | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                     |
  |:---|:---|:---|:---|
  | 输入参数  | init                  | bool  | 可选参数，是否清理统计信息并重新开始统计。                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数  | curr_used_zone_count | int    | 当前使用的UndoZone数量。                                                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数   | top_used_zones        | text   | 前三个使用量最大的UndoZone信息，格式输出为： - zoneId1：使用大小。  - zoneId2：使用大小。  - zoneId3：使用大小。   |
  | 输出参数  | curr_used_undo_size  | int    | 当前使用的Undo总空间大小，单位为MB。                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数   | undo_threshold          | int  | 为GUC参数undo_space_limit_size \* 80%计算的结果,单位为MB。                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数 | global_recycle_xid       | xid   | 当前Undo空间回收到的事务xid（小于该xid事务产生的Undo记录都已经被回收）。                                                                                                                                                                                                                                                                                                                                                                              |
  | 输出参数   | oldest_xmin            | xid      | 最旧的活跃事务。                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | 输出参数  | total_undo_chain_len | int8    | 所有访问过的Undo链总长度。                                                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数   | max_undo_chain_len    | int8    | 最大访问过的Undo链长度。                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数    | create_undo_file_count  | uint32  | 创建的Undo文件数量统计。                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数     | discard_undo_file_count | uint32 | 删除的Undo文件数量统计。                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数   | info                    | text   | 如果入参为false，输出undo_space_limit_size、undo_limit_size_per_transaction 、undo_retention_time参数的合理化建议。 如果入参为true，即需要init（清理统计信息），仅提示'The statistics have been initialized.'。                                                                                                                                                                                                       |
     
  示例1：清除undo统计信息
  ```
  gaussdb=# SELECT * FROM gs_stat_undo(true);
  curr_used_zone_count |   top_used_zones    | curr_used_undo_size | undo_threshold | global_recycle_xid | oldest_xmin | total_undo_chain_len | max_undo_chain_len | create_undo_file_coun
  t | discard_undo_file_count |                 info
  ----------------------+---------------------+---------------------+----------------+--------------------+-------------+----------------------+--------------------+----------------------
  --+-------------------------+--------------------------------------
                      3 | 0 : 0, 0 : 0, 0 : 0 |                   1 |         209715 |              15741 |       15741 |                    0 |                  0 |
  2 |                       0 | The statistics have been initialized.
  (1 row)
  ```
  示例2：输出undo统计信息
  ```
  gaussdb=# SELECT * FROM gs_stat_undo(false);
  curr_used_zone_count |   top_used_zones    | curr_used_undo_size | undo_threshold | global_recycle_xid | oldest_xmin | total_undo_chain_len | max_undo_chain_len | create_undo_file_coun
  t | discard_undo_file_count |
               info
  ----------------------+---------------------+---------------------+----------------+--------------------+-------------+----------------------+--------------------+----------------------
  --+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------
  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  -
                      3 | 0 : 0, 0 : 0, 0 : 0 |                   1 |         209715 |              16253 |       16253 |                    0 |                  0 |
  2 |                       0 | Based on the statistic info from last initialization, undo_space_limit_size is recommended to set >= 120953 blocks, undo_limit_size_per_transaction is
  recommended to set <= 327150 blocks, undo_retention_time is recommended to set <= 259200 seconds. Since last initialization, max undo space used by a single transaction is 32715 blocks.
  (1 row)
  ```
  
- gs_undo_record(undoptr) 描述：Undo记录解析。
  参数：undoptr（undo记录指针）。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  
- gs_undo_dump_parsepage_mv(relpath text, blkno bigint, reltype text, rmem boolean) 描述：解析USTORE数据表磁盘页面的页头信息，每个元组的头部信息，标识位信息以及所有可以查询到undo历史版本信息。
  返回值类型：text
  备注：必须是系统管理员或者运维管理人员才能执行此函数。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该接口当前仅支持USTORE数据表。
  表4gs_undo_dump_parsepage_mv参数说明 
  | 参数类型 | 参数名    | 类型       | 描述                                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|:---|
  | 输入参数 | relpath | text   | USTORE表数据文件相对路径，相对路径格式为：tablespace name/database oid/relfilenode，例如base/16603/16384, 表对应数据文件的相对路径查找可以通过pg_relation_filepath('tablename')查询。                                                                                                                                                       |
  | 输入参数    | blkno    | int8   | - -1 解析所有block页面。  - 0-MaxBlocNumber解析指定的block页面。                                           |
  | 输入参数  | reltype   | text     | 表类型，目前仅支持USTORE数据表，取值为uheap。                                                                                                                                                                                                                                                                    |
  | 输入参数    | rmem     | boolean | - false  - true   目前仅支持false，从磁盘文件上解析对应的页面。 |
  | 输出参数 | output      | text    | 解析结果文件的绝对路径。                                                                                                                                                                                                                                                                                  |
     
  
- gs_undo_meta_dump_zone(zone_id int, read_memory boolean) 描述：解析Undo模块中UndoZone的元信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表5gs_undo_meta_dump_zone页式参数说明 
  | 参数类型   | 参数名             | 类型     | 描述                                                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|
  | 输入参数   | zone_id         | int     | UndoZone编号： - -1：查询所有UndoZone。  - 0-1,048,575：查询对应zone_id编号的UndoZone元信息。                                                                                                 |
  | 输入参数    | read_memory    | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                          |
  | 输出参数   | zone_id       | oid   | UndoZone编号。                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数  | persist_type   | oid      | 持久化级别： - 0：普通表。  - 1：无日志表。  - 2：临时表。   |
  | 输出参数 | insert         | text    | 下一条插入的Undo记录位置。                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数 | discard         | text   | 普通回收到的Undo记录位置。                                                                                                                                                                                                                                                                                                                                                               |
  | 输出参数  | forcediscard | text   | 强制回收掉Undo记录位置，小于它的Undo记录已经被回收。                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数    | lsn            | text      | 修改UndoZone的LSN。                                                                                                                                                                                                                                                                                                                                                               |
     
  示例：
  ```
  gaussdb=# SELECT * FROM gs_undo_meta_dump_zone(-1,true);
   zone_id | persist_type | insert | discard | forcediscard |   lsn
  ---------+--------------+--------+---------+--------------+----------
         0 |            0 | 244577 | 244577  | 244577       | 43967224
         1 |            0 | 108    | 66      | 66           | 43967568
    349525 |            1 | 24     | 24      | 24           | 0
    349526 |            1 | 24     | 24      | 24           | 0
    699050 |            2 | 24     | 24      | 24           | 0
    699051 |            2 | 24     | 24      | 24           | 0
  (6 rows)
  ```
  
- gs_undo_meta_dump_spaces(zone_id int, read_memory boolean) 描述：解析Undo模块中Undo记录空间、Transaction Slot空间的元信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  表6gs_undo_meta_dump_spaces参数说明 
  | 参数类型   | 参数名                     | 类型     | 描述                                                                                                                                                                                                                                                                     |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id               | int       | UndoZone编号： - -1：查询所有UndoZone。  - 0-1,048,575：查询对应zone_id编号的UndoZone元信息。   |
  | 输入参数   | read_memory            | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                              |
  | 输出参数 | zone_id                 | int      | UndoZone编号。                                                                                                                                                                                                                                                          |
  | 输出参数   | undorecord_space_tail | text        | UndoRecord空间的结尾位置。                                                                                                                                                                                                                                                     |
  | 输出参数   | undorecord_space_head | text      | UndoRecord空间的起始位置。                                                                                                                                                                                                                                                      |
  | 输出参数   | undorecord_space_lsn    | text     | 修改UndoRecord空间LSN。                                                                                                                                                                                                                                                      |
  | 输出参数     | undoslot_space_tail     | text    | Transaction Slot空间的结尾位置。                                                                                                                                                                                                                                                |
  | 输出参数       | undoslot_space_head    | text     | Transaction Slot空间的起始位置。                                                                                                                                                                                                                                               |
  | 输出参数   | undoreslot_space_lsn   | text     | 修改Transaction Slot空间LSN。                                                                                                                                                                                                                                               |
     
  
- gs_undo_meta_dump_slot(zone_id int, read_memory boolean) 描述：解析Undo模块中Transaction Slot元信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  表7gs_undo_meta_dump_slot参数说明 
  | 参数类型  | 参数名                 | 类型        | 描述                                                                                                                                                                                                                                                                      |
  |:---|:---|:---|:---|
  | 输入参数 | zone_id               | int    | Undo zone编号： - -1：查询所有UndoZone。  - 0-1,048,575：查询对应zone_id编号的UndoZone元信息。   |
  | 输入参数  | read_memory         | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                   |
  | 输出参数    | zone_id              | int     | UndoZone编号。                                                                                                                                                                                                                                                               |
  | 输出参数 | allocate           | text   | Undo Transaction Slot分配位置。                                                                                                                                                                                                                                                |
  | 输出参数   | recycle            | text     | Undo Transaction Slot回收位置。                                                                                                                                                                                                                                                |
  | 输出参数 | frozen_xid          | text   | Frozen Xid，用于可见性判断。                                                                                                                                                                                                                                                       |
  | 输出参数    | global_frozen_xid  | text    | 全局最小的Frozen Xid，小于该Xid的事务可见。                                                                                                                                                                                                                                               |
  | 输出参数 | recycle_xid         | text    | 回收到的Xid，小于该Xid的事务被回收。                                                                                                                                                                                                                                                    |
  | 输出参数     | global_recycle_xid | text   | 全局最小的Recycle Xid，小于该Xid的事务被回收。                                                                                                                                                                                                                                             |
     
  
- gs_undo_translot_dump_slot(zone_id int, read_memory boolean) 描述：解析UndoZone中的Transaction Slot。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表8gs_undo_translot_dump_slot页式参数说明 
  | 参数类型   | 参数名           | 类型       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  |:---|:---|:---|:---|
  | 输入参数    | zone_id      | int    | UndoZone编号： - -1：查询所有UndoZone。  - 0-1,048,575：查询对应zone_id编号的UndoZone元信息。                                                                                                                                                                     |
  | 输入参数 | read_memory   | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                                                                                         |
  | 输出参数  | zone_id      | oid      | UndoZone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数   | slot_xid     | text      | 事务ID。                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | 输出参数   | start_undoptr | text     | 本Transaction Slot起始Undo Record在本UndoZone内的位置。                                                                                                                                                                                                                                                                                                                                                                                                 |
  | 输出参数   | end_undoptr | text     | 本Transaction Slot结束Undo Record在本UndoZone内的位置。                                                                                                                                                                                                                                                                                                                                                                                                 |
  | 输出参数     | slot_ptr        | text     | Transaction Slot对应的位置。                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数    | slot_states  | oid        | 事务状态： - 0：已提交。  - 1：执行中。  - 2：回滚中。  - 3：回滚完成。   |
     
  示例：
  ```
  gaussdb=# SELECT * FROM gs_undo_translot_dump_slot(-1,true);
   zone_id |     slot_xid     |  start_undoptr   |   end_undoptr    |     slot_ptr     | slot_states
  ---------+------------------+------------------+------------------+------------------+-------------
         1 | 0000000000015758 | 0000000000000042 | 000000000000006C | 0000000000000038 |           0
  (1 row)
  ```
  
- gs_undo_translot_dump_xid(slot_xid xid, read_memory boolean) 描述：根据xid解析UndoZone中对应的Transaction Slot。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表9gs_undo_translot_dump_xid页式参数说明 
  | 参数类型 | 参数名          | 类型  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|:---|
  | 输入参数  | slot_xid    | xid   | 需要查询的事务ID。                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | 输入参数   | read_memory | boolean | - true：从当前内存中读取。  - false：从物理文件中读取。                                                                                                                                                                                                          |
  | 输出参数   | zone_id      | oid  | UndoZone编号。                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数   | slot_xid     | text   | 事务ID。                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数  | start_undoptr | text  | 本Transaction Slot起始Undo Record在本UndoZone内的位置。                                                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数    | end_undoptr  | text    | 本Transaction Slot结束Undo Record在本UndoZone内的位置。                                                                                                                                                                                                                                                                                                                                                                                                     |
  | 输出参数   | slot_ptr       | text  | Transaction Slot对应的位置。                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数  | slot_states  | oid  | 事务状态： - 0 已提交。  - 1 执行中。  - 2 回滚中。  - 3 回滚完成。   |
     
  示例：
  ```
  gaussdb=# SELECT * FROM gs_undo_translot_dump_xid('15758',false);
   zone_id |     slot_xid     |  start_undoptr   |   end_undoptr    |     slot_ptr     | slot_states
  ---------+------------------+------------------+------------------+------------------+-------------
         1 | 0000000000015758 | 0000000000000042 | 000000000000006C | 0000000000000038 |           0
  (1 row)
  ```
  
- gs_undo_dump_record(undoptr bigint) 描述：解析给定URP的Undo Record信息。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表10gs_undo_dump_record页式参数说明 
  | 参数类型     | 参数名                 | 类型       | 描述                             |
  |:---|:---|:---|:---|
  | 输入参数   | undoptr         | xid     | 需要解析的Undo记录起始位置,十进制格式。         |
  | 输出参数    | undoptr              | xid   | 需要解析的Undo记录在本UndoZone内的起始位置。 |
  | 输出参数     | xactid             | xid       | 事务ID。                         |
  | 输出参数    | cid              | text     | Command Id。                   |
  | 输出参数    | reloid             | text     | Relation oid。                 |
  | 输出参数    | relfilenode         | text     | 文件的Relfinode。                |
  | 输出参数    | utype              | text  | Undo记录类型。                      |
  | 输出参数    | blkprev          | text   | 同一个块前一条Undo记录的位置。             |
  | 输出参数  | blockno         | text   | 块号。                         |
  | 输出参数    | uoffset          | text  | Undo记录偏移。                   |
  | 输出参数 | prevurp         | text   | 前一条Undo记录位置。                |
  | 输出参数   | payloadlen       | text   | Undo记录数据部分长度。                |
  | 输出参数  | oldxactid        | text    | 前一个事务ID。                    |
  | 输出参数  | partitionoid      | text   | 分区oid。                      |
  | 输出参数     | tablespace        | text | 表空间。                         |
  | 输出参数   | alreadyread_bytes | text     | 读取到的Undo记录长度。                 |
  | 输出参数  | prev_undorec_len   | text  | 前一条Undo记录长度。                 |
  | 输出参数  | td_id          | text    | Transaction Directory的ID。    |
  | 输出参数    | reserved        | text    | Undo记录中存储的旧版本元组预留标识位。        |
  | 输出参数   | flag             | text   | Undo记录中存储的旧版本元组状态标识。        |
  | 输出参数 | flag2           | text   | Undo记录中存储的旧版本元组列数。            |
  | 输出参数  | t_hoff            | text   | Undo记录数据头的长度。                |
     
  示例（在Undo记录没有被回收的前提下，入参undoptr可以通过gs_undo_translot_dump_slot函数的出参end_undoptr转换为10进制后进行查询）：
  ```
  gaussdb=# SELECT * FROM gs_undo_dump_record('0000000000000042');
   undoptr |   xactid   | cid | reloid | relfilenode | utype |  blkprev   | blockno | uoffset | prevurp | payloadlen | oldxactid | partitionoid | tablespace | alreadyread_byt
  es | prev_undorec_len | td_id | reserved | flag | flag2 | t_hoff
  ---------+------------+-----+--------+-------------+-------+------------+---------+---------+---------+------------+-----------+--------------+------------+----------------
  ---+------------------+-------+----------+------+-------+--------
        42 | 1073807360 | 0   | 0      | 108986369   | 0     | 1024786474 | 0       | 0       | 0       | 0          | 0         | 0            | 0          | 36
     | 16390            | -1    | -1       | -1   | -1    | -1
  (1 row)
  ```
  
- gs_undo_dump_xid(undo_xid xid) 描述：根据xid解析Undo记录。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表11gs_undo_dump_xid页式参数说明 
  | 参数类型    | 参数名                | 类型     | 描述                          |
  |:---|:---|:---|:---|
  | 输入参数    | undo_xid         | xid    | 事务Xid。                       |
  | 输出参数     | undoptr             | xid      | 需要解析的Undo记录在本UndoZone内的起始位置。 |
  | 输出参数   | xactid             | xid   | 事务ID。                        |
  | 输出参数    | cid               | text   | Command Id。                 |
  | 输出参数 | reloid              | text  | Relation oid。               |
  | 输出参数   | relfilenode       | text   | 文件的Relfinode。               |
  | 输出参数 | utype               | text  | Undo记录类型。                   |
  | 输出参数  | blkprev            | text   | 同一个块前一条Undo记录的位置。            |
  | 输出参数     | blockno          | text  | 块号。                          |
  | 输出参数    | uoffset           | text | Undo记录偏移。                    |
  | 输出参数   | prevurp             | text   | 前一条Undo记录位置。               |
  | 输出参数   | payloadlen        | text | Undo记录数据部分长度。               |
  | 输出参数   | oldxactid         | text   | 前一个事务ID。                  |
  | 输出参数   | partitionoid        | text   | 分区oid。                      |
  | 输出参数 | tablespace        | text  | 表空间。                        |
  | 输出参数   | alreadyread_bytes | text    | 读取到的Undo记录长度。               |
  | 输出参数  | prev_undorec_len | text  | 前一条Undo记录长度。               |
  | 输出参数  | td_id             | text   | Transaction Directory的ID。   |
  | 输出参数  | reserved          | text   | Undo记录中存储的旧版本元组预留标识位。      |
  | 输出参数    | flag             | text | Undo记录中存储的旧版本元组状态标识。        |
  | 输出参数   | flag2             | text    | Undo记录中存储的旧版本元组列数。          |
  | 输出参数     | t_hoff            | text    | Undo记录数据头的长度。              |
     
  示例：
  ```
  gaussdb=# SELECT * FROM gs_undo_dump_xid('15779');
   undoptr | xactid | cid | reloid | relfilenode | utype | blkprev | blockno | uoffset | prevurp | payloadlen | oldxactid | partitionoid | tablespace | alreadyread_bytes | pr
  ev_undorec_len | td_id | reserved | flag | flag2 | t_hoff
  ---------+--------+-----+--------+-------------+-------+---------+---------+---------+---------+------------+-----------+--------------+------------+-------------------+---
  ---------------+-------+----------+------+-------+--------
       108 |  15779 | 0   | 16767  | 16767       | 64    | 0       | 0       | 3       | 0       | 0          | 0         | 0            | 1663       | 40                | 42
                 | -1    | -1       | -1   | -1    | -1
  (1 row)
  ```
  
- gs_verify_undo_record(type, start_idx，end_idx, location) 描述：校验Undo记录，目前只支持磁盘校验模式。仅支持在业务非运行时执行离线校验，校验之前需要手动执行一次checkpoint落盘操作。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表12gs_verify_undo_record页式参数说明 
  | 参数类型 | 参数名      | 类型    | 描述                                                                                                                                                                                                                                                                                                                       |
  |:---|:---|:---|:---|
  | 输入参数  | type      | text  | 校验类型： - 'urp'：校验给定urp区间的所有Undo记录。  - 'zone'：校验给定Zone区间的所有Zone的所有Undo记录。   |
  | 输入参数   | start_idx | int8   | 开始位置： - type为'urp'时，表示起始Undo记录位置。  - type为'zone'时，表示起始UndoZone编号。        |
  | 输入参数    | end_idx  | int8     | 结束位置： - type为'urp'时，表示Undo记录结束位置。  - type为'zone'时，表示结束UndoZone编号。   |
  | 输入参数   | location  | bool | - 0：内存校验。  - 1：磁盘校验。   目前该参数只支持输入为1。                                     |
  | 输出参数  | zone_id  | int8   | UndoZone编号。                                                                                                                                                                                                                                                                                                               |
  | 输出参数   | detail    | text    | 校验出错信息。                                                                                                                                                                                                                                                                                                                  |
     
  示例1，校验urp为24的这条Undo记录：
  ```
  gaussdb=# SELECT * FROM gs_verify_undo_record('urp', 24, 24, 1);
  zone_id | detail
  --------+--------
  (0 rows)
  ```
  示例2，从磁盘中校验zone0到zone2的所有Undo记录：
  ```
  gaussdb=# SELECT * FROM gs_verify_undo_record('zone', 0, 2, 1);
  zone_id | detail
  --------+--------
  (0 rows)
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  调用此函数如有报错，请联系华为工程师处理。
  

- gs_verify_undo_slot(type, start_idx, end_idx, location) 描述：校验Undo事务槽，目前只支持磁盘校验模式。仅支持在业务非运行时执行离线校验，校验之前需要手动执行一次checkpoint落盘操作。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  当回滚段使用页式文件存储方式时，使用以下格式。
  表13gs_verify_undo_slot页式参数说明 
  | 参数类型 | 参数名        | 类型   | 描述                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|:---|
  | 输入参数    | type        | text  | 校验类型： - 'zone'：校验给定zone区间的所有zone的所有事务槽。                                                                                            |
  | 输入参数  | start_idx | int8 | 起始UndoZone编号。                                                                                                                                                                                                                                                                     |
  | 输入参数  | end_idx    | int8 | 结束UndoZone编号。                                                                                                                                                                                                                                                                   |
  | 输入参数 | location     | bool   | - 0：内存校验。  - 1：磁盘校验。   目前该参数只支持输入为1。 |
  | 输出参数   | zone_id   | int8  | UndoZone编号。                                                                                                                                                                                                                                                                     |
  | 输出参数   | detail     | text | 校验出错信息。                                                                                                                                                                                                                                                                           |
     
  示例，从磁盘中校验zone0到zone2的所有事务槽记录：
  ```
  gaussdb=# SELECT * FROM gs_verify_undo_slot('zone', 0, 2, 1);
  zone_id | detail
  --------+--------
  (0 rows)
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  调用此函数如有报错，请联系华为工程师处理。
  

- gs_verify_undo_meta(type, start_idx, end_idx, location) 描述：校验Undo元信息，目前只支持磁盘校验模式。仅支持在业务非运行时执行离线校验，校验之前需要手动执行一次checkpoint落盘操作。
  返回值类型：record
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  该系统函数仅支持回滚段使用页式存储方式。
  表14gs_verify_undo_meta参数说明 
  | 参数类型 | 参数名      | 类型     | 描述                                                                                                                                                                                                                                                                                     |
  |:---|:---|:---|:---|
  | 输入参数 | type       | text    | 校验类型，type只能设置为'all'，表示校验给定Zone区间的所有Zone的所有meta信息。                                                                                                                                                                                                                                     |
  | 输入参数  | start_idx | int64  | 起始UndoZone编号。                                                                                                                                                                                                                                                                         |
  | 输入参数  | end_idx   | int64   | 结束UndoZone编号。                                                                                                                                                                                                                                                                         |
  | 输入参数   | location    | bool   | - 0：内存校验。  - 1：磁盘校验。   目前该参数只支持输入为1。 |
  | 输出参数  | zone_id | int64 | UndoZone编号。                                                                                                                                                                                                                                                                            |
  | 输出参数  | detail   | text    | 校验出错信息。                                                                                                                                                                                                                                                                               |
     
  示例，从磁盘中校验zone0到zone2的所有meta信息记录：
  ```
  gaussdb=# SELECT * FROM gs_verify_undo_meta('all', 0, 2, 1);
  zone_id | detail
  --------+--------
  (0 rows)
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  调用此函数如有报错，请联系华为工程师处理。
  

- gs_async_rollback_worker_status() 描述：活跃异步回滚线程状态监控。
  返回值类型：record
  表15gs_async_rollback_worker_status参数说明 
  | 参数类型   | 参数名                 | 类型         | 描述                                                                                                                                                                                                                                                                                                                                                                                         |
  |:---|:---|:---|:---|
  | 输出参数   | datid            | oid       | 数据库ID。                                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数  | pid                | int8       | 线程ID。                                                                                                                                                                                                                                                                                                                                                                                    |
  | 输出参数   | sessionid         | int8       | 会话ID。                                                                                                                                                                                                                                                                                                                                                                                     |
  | 输出参数  | usesysid           | oid        | 发起该线程的用户ID。                                                                                                                                                                                                                                                                                                                                                                                 |
  | 输出参数    | state              | int        | 线程当前状态： - 0：未定义。  - 1：空闲。  - 2：运行中。   |
  | 输出参数   | rollback_start_time | timestamptz | 线程启动时间戳。                                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数 | idx               | oid        | 异步回滚线程在数组中的下标。                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数 | xid               | xid        | 正在回滚的事务xid。                                                                                                                                                                                                                                                                                                                                                                               |
  | 输出参数 | progress          | text     | 该事务的回滚进度（当前已回滚的Undo记录条数/总Undo记录条数，以百分比形式显示）。                                                                                                                                                                                                                                                                                                                                               |
     
  
- gs_async_rollback_xact_status() 描述：异步回滚任务哈希表监控。
  返回值类型：record
  表16gs_async_rollback_xact_status参数说明 
  | 参数类型 | 参数名              | 类型    | 描述                 |
  |:---|:---|:---|:---|
  | 输出参数 | xid            | xid     | 需要进行异步回滚的事务xid。    |
  | 输出参数 | start_undoptr | xid  | 该事务起始Undo记录指针。       |
  | 输出参数  | end_undoptr      | xid     | 该事务结束Undo记录指针。     |
  | 输出参数   | dbid            | uint32 | 该事务所在数据库id。         |
  | 输出参数    | slot_ptr        | xid | 该事务对应事务槽的指针。       |
  | 输出参数  | launched      | bool  | 是否有对应的活跃的异步回滚线程。 |
     
  

- gs_undo_recycler_status() 描述：异步回收线程状态监控。
  返回值类型：record
  表17gs_undo_recycler_status参数说明 
  | 参数类型 | 参数名                                      | 类型            | 描述                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|:---|:---|
  | 输出参数   | datid                                  | oid         | 数据库ID。                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数 | pid                                     | int8         | 线程ID。                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数 | sessionid                              | int8         | 会话ID。                                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数   | usesysid                                | oid         | 发起该线程的用户ID。                                                                                                                                                                                                                                                                                                                                                                       |
  | 输出参数 | state                                    | int          | 线程当前状态： - 0：未定义。  - 1：空闲。  - 2：运行中。   |
  | 输出参数 | backend_start                         | timestamptz | 线程启动时间戳。                                                                                                                                                                                                                                                                                                                                                                          |
  | 输出参数   | total_recycle_time                       | xid          | 总回收时间。                                                                                                                                                                                                                                                                                                                                                                             |
  | 输出参数  | max_recycle_time                       | xid          | 最大回收时间。                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数 | total_recycle_size                       | xid          | 总回收空间。                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数    | total_recycle_count                    | xid         | 总回收次数。                                                                                                                                                                                                                                                                                                                                                                              |
  | 输出参数   | recycle_sleep_count                      | xid            | 睡眠次数。                                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数 | recycle_sleep_time                        | xid           | 睡眠总时间。                                                                                                                                                                                                                                                                                                                                                                               |
  | 输出参数   | max_recycle_sleep_time                  | xid           | 最长睡眠时间。                                                                                                                                                                                                                                                                                                                                                                              |
  | 输出参数  | last_recycle_timestamp                   | timestamptz   | 上次成功回收时间戳。                                                                                                                                                                                                                                                                                                                                                                         |
  | 输出参数 | last_update_global_recycle_xid_timestamp | timestamptz    | globalRecycleXid上次推进时间戳。                                                                                                                                                                                                                                                                                                                                                           |
     
  
- gs_undo_launcher_status() 描述：异步回滚发起线程状态监控。
  返回值类型：record
  表18gs_undo_launcher_status参数说明 
  | 参数类型      | 参数名                           | 类型           | 描述                                                                                                                                                                                                                                                                                                                                                                                       |
  |:---|:---|:---|:---|
  | 输出参数   | datid                            | oid       | 数据库ID。                                                                                                                                                                                                                                                                                                                                                                                   |
  | 输出参数     | pid                             | int64        | 线程ID。                                                                                                                                                                                                                                                                                                                                                                                  |
  | 输出参数  | sessionid                       | int64      | 会话ID。                                                                                                                                                                                                                                                                                                                                                                                      |
  | 输出参数   | usesysid                      | oid       | 发起该线程的用户ID。                                                                                                                                                                                                                                                                                                                                                                           |
  | 输出参数   | state                            | int32       | 线程当前状态： - 0：未定义。  - 1：空闲。  - 2：运行中。   |
  | 输出参数     | backend_start                    | timestamptz | 线程启动时间戳。                                                                                                                                                                                                                                                                                                                                                                               |
  | 输出参数 | total_async_rollback_task_count | uint64    | 本节点数据库启动后发起异步回滚任务总个数。                                                                                                                                                                                                                                                                                                                                                                |
  | 输出参数   | average_async_rollback_time  | uint64    | 异步回滚任务平均耗时。                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数    | max_async_rollback_time         | uint64     | 异步回滚任务最长耗时。                                                                                                                                                                                                                                                                                                                                                                            |
  | 输出参数   | min_async_rollback_time         | uint64     | 异步回滚任务最短耗时。                                                                                                                                                                                                                                                                                                                                                                            |
     
  
 
