
# 其它函数
#### pgxc_pool_check()
描述：检查连接池中缓存的连接数据是否与pgxc_node一致。8.3.0及以上集群版本中该参数已废弃。
返回值类型：boolean
#### pgxc_pool_reload()
描述：更新连接池中缓存的连接信息。
返回值类型：boolean
#### pg_pool_validate(clear boolean, co_node_name cstring)
描述：清理CN上无效的后台线程（这些后台线程持有无效的pooler连接，这里无效的pooler连接指的是连接到当前DN备实例的连接）。
返回值类型：record
#### pg_nodes_memory()
描述：查看所有节点的内存占用。
返回值类型：record
#### table_skewness(text)
描述：查看表数据在所有节点的占比。
参数：表示待查询表的表名，为text类型。
返回值类型：record
#### table_skewness(table_name text, column_name text\[, row_num text\])
描述：查看表里某列数据，按hash分布规则，在各节点的占比情况。结果以数据节点上的数据量排序。
参数：table_name为表名；column_name为列名；row_num表示查看当前列所有数据，可缺省，默认为0。非0时，表示抽取指定条数的数据查看占比情况（每次采样结果可能不相同，只保证采集row_num条数据进行占比计算）。
返回值类型：record
示例：
根据tx表中的a列，按hash分布，则在1，2，0编号的DN上分布的数据量分别为7条，2条，1条。
```
SELECT * FROM table_skewness('tx','a');
 seqnum | num |  ratio
--------+-----+----------
 1      | 7   | 70.000%
 2      | 2   | 20.000%
 0      | 1   | 10.000%
(3 rows)
```
#### table_data_skewness(data_row record, locatorType "char")
描述：计算指定表中列拼接出的record，对应的桶分布索引。
参数：data_row表示指定表中列拼接出的record，locatorType表示分布规则，当前建议指定'H'，按hash分布计算。
返回值类型：smallint
示例：
计算tx表中a列拼接的record，按照hash分布规则对应的桶分布索引。
```
select a, table_data_skewness(row(a), 'H') from tx;
 a | table_data_skewness 
---+---------------------
 3 |                   0
 6 |                   2
 7 |                   2
 4 |                   1
 5 |                   1
(5 rows)
```
#### table_distribution(schemaname text, tablename text)
描述：查看指定表在各个节点上占用的存储空间。
参数：表示待查询表的模式名和表名，均为text类型。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数查询指定表存储分布信息，需要具备管理员权限或预置角色gs_role_read_all_stats权限。
- table_distribution性能比table_skewness更优，尤其是在大集群大数据量场景下，请优先考虑使用table_distribution函数。
- 当使用table_distribution并希望直观地看到空间占比时，可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
 
#### table_distribution(regclass)
描述：查看指定表在各个节点上占用的存储空间。
参数：表示待查询表的表名或OID，表名可以有模式名限定。为regclass类型。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数查询指定表存储分布信息，需要具备管理员权限或预置角色gs_role_read_all_stats权限。
- table_distribution性能比table_skewness更优，尤其是在大集群大数据量场景下，请优先考虑使用table_distribution函数。
- 当使用table_distribution并希望直观地看到空间占比时，可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
 
#### table_distribution()
描述：查看当前库中所有表在各节点的存储空间分布情况。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数涉及全库表信息查询，需要具备管理员权限或预置角色gs_role_read_all_stats权限。
- 当前基于table_distribution()函数，DWS提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询，建议在数据库中表数量（小于10000）较少的场景直接使用。
 
#### gs_table_distribution(schemaname text, tablename text)
描述：快速查看指定表在各个节点上占用的存储空间。
返回值类型：record
表1gs_table_distribution(schemaname text, tablename text)函数返回字段 
| 名称             | 类型        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| schemaname     | name      | 模式名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| tablename      | name      | 表名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| relkind        | character | 类型。 - i：索引  - r：表                                                                                                                                                                                                                                                                                       |
| relpersistence | character | 类型。 - t：本地临时表  - g：全局临时表    - u：unlogged表  - p：普通表   |
| nodename       | name      | 节点名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| dnsize         | bigint    | 表在该节点上的存储空间大小，单位：字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| sessionid      | bigint    | 对于全局临时表显示每个会话的session id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数查询指定表存储分布信息，需要具备管理员权限或预置角色gs_role_read_all_stats权限。
- 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录，需确保GUC参数use_workload_manager和enable_perm_space必须开启。
- 性能上，单表查询时，gs_table_distribution函数低于table_distribution函数；在全库表查询时，gs_table_distribution函数大幅度优于table_distribution函数；在大集群大数据量场景下，如果进行全库表查询，建议优先使用gs_table_distribution函数。
- 全局临时表可以显示每个会话在存储空间分布情况。通过sessionid列区分不同会话。
 
#### gs_table_distribution()
描述：快速查看当前库中所有表在各节点的存储空间分布情况。
返回值类型：record
表2gs_table_distribution()函数返回字段 
| 名称             | 类型        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| schemaname     | name      | 模式名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| tablename      | name      | 表名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| relkind        | character | 类型。 - i：索引  - r：表                                                                                                                                                                                                                                                                                            |
| relpersistence | character | 类型。 - t：本地临时表  - g：全局临时表    - u：unlogged表  - p：普通表   |
| nodename       | name      | 节点名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| dnsize         | bigint    | 表在该节点上的存储空间大小，单位：字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| sessionid      | bigint    | 对于全局临时表显示每个会话的session id。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数查询指定表存储分布信息，需要具备管理员权限或预置角色gs_role_read_all_stats权限。
- 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录，需确保GUC参数use_workload_manager和enable_perm_space必须开启。
- 性能上，单表查询时，gs_table_distribution函数低于table_distribution函数；在全库表查询时，gs_table_distribution函数大幅度优于table_distribution函数；在大集群大数据量场景下，如果进行全库表查询，建议优先使用gs_table_distribution函数。
- 基于gs_table_distribution()函数，DWS自8.2.1集群版本提供了视图PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS进行数据倾斜查询，建议在数据库中表数量（小于10000）较少的场景直接使用。
 
#### check_foreign_key_constraint(schema.table)
描述：检测外键表中的数据是否满足外键约束。该参数仅9.1.0.200及以上集群版本支持。
返回值类型：text
示例：
```
set info_constraint_options = 'foreign_key';
CREATE TABLE ptt1 (a int,b int,e varchar(50),f varchar(50),PRIMARY KEY (a,b)) DISTRIBUTE BY HASH(a,b);
CREATE TABLE tt2 (a int , b int, c int, d int) DISTRIBUTE BY HASH(a,b);
select check_foreign_key_constraint('table_constraints.tt2');
check_foreign_key_constraint
-----------------------------------------
tt2 table has no foreign key constraint
ALTER TABLE tt2 ADD CONSTRAINT fk_tt1_a FOREIGN KEY (a,b) REFERENCES ptt1(a,b);
select check_foreign_key_constraint('table_constraints.tt2');
check_foreign_key_constraint
-------------------------------------------
tt2 satisfied all Foreign key constraints
```
#### plan_seed()
描述：获取前一次查询语句的seed值（内部使用）。
返回值类型：integer
#### pg_stat_get_env()
描述：提供获取当前节点的环境变量信息。
返回值类型：record
#### pg_stat_get_thread()
描述：提供当前节点下所有线程的状态信息。
返回值类型：record
#### pgxc_get_os_threads()
描述：提供当前集群中所有正常节点下的线程状态信息。
返回值类型：record
#### pg_stat_get_sql_count()
描述：提供当前节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数和响应时间的统计结果以及DDL、DML、DCL语句的计数结果。
返回值类型：record
#### pgxc_get_sql_count()
描述：提供当前集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数和响应时间的统计结果以及DDL、DML、DCL语句的计数结果。
返回值类型：record
#### pgxc_get_workload_sql_count()
描述：提供当前集群所有CN上所有Workload控制组内执行的SELECT/UPDATE/INSERT/DELETE语句的计数统计结果以及DDL、DML、DCL类型语句的计数统计结果。
返回值类型：record
#### pgxc_get_workload_sql_elapse_time()
描述：提供当前集群所有CN上所有Workload控制组内执行的SELECT/UPDATE/INSERT/DELETE语句的响应时间统计结果。
返回值类型：record
#### get_instr_unique_sql()
描述：提供当前节点中收集的Unique SQL的信息。如果是CN节点，将返回该CN上收集的Unique SQL的完整信息，即会收集其他CN和DN上对应Unique SQL的信息并进行汇总展示；如果是DN节点，将返回本DN节点上的Unique SQL信息。详见视图GS_INSTR_UNIQUE_SQL。
返回值类型：record
#### reset_instr_unique_sql(cstring, cstring, INT8)
描述：清理已收集的Unique SQL信息。输入参数含义如下：
- GLOBAL/LOCAL：清理范围为所有节点或当前节点。
- ALL/BY_USERID/BY_CNID/BY_GUC：ALL表示清理所有，BY_USERID/BY_CNID表示按照USERID或CNID进行清理，BY_GUC表示清理操作是由GUC参数instr_unique_sql_count设置值变小引起的。
- 第三个参数值对应第二个参数设置，ALL/BY_GUC的情况下该值无意义。
返回值类型：bool
#### pgxc_get_instr_unique_sql()
描述：提供集群中所有CN上收集的Unique SQL的完整信息。该函数只能在CN上执行。
返回值类型：record
#### get_instr_unique_sql_remote_cns()
描述：提供集群中除正在执行此函数的CN之外的所有CN上收集的Unique SQL的完整信息。该函数只能在CN上执行。
返回值类型：record
#### pgxc_get_node_env()
描述：提供获取集群中所有节点的环境变量信息。
返回值类型：record
#### gs_switch_relfilenode()
描述：交换两个表或分区的元信息（重分布工具内部使用，用户直接使用会有错误信息提示）。
返回值类型：integer
#### copy_error_log_create()
描述：创建COPY FROM容错机制所需要的错误表（public.pgxc_copy_error_log）。
返回值类型：boolean
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 此函数会尝试创建public.pgxc_copy_error_log表，表的详细信息请参见[表3]。
- 在relname列上创建B-tree索引，并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制（与COPY语句权限一致）。
- 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表，因此集群上必须支持行存表的创建才能够正常运行此函数，并使用后续的COPY容错功能。需要特别注意的是，enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表（DWS默认为off）。
- 此函数自身权限为Sysadmin及以上（与错误表、COPY权限一致）。
- 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在，则此函数会报错回滚。
 
 表3错误表public.pgxc_copy_error_log信息 
| 列名称        | 类型                       | 描述                                                    |
|:---|:---|:---|
| relname    | varchar                  | 表名称。以模式名.表名形式显示。                                      |
| begintime  | timestamp with time zone | 出现数据格式错误的时间。                                          |
| filename   | varchar                  | 出现数据格式错误的数据源文件名。                                      |
| rownum     | bigint                   | 在数据源文件中，出现数据格式错误的行号。                                  |
| rawrecord  | text                     | 在数据源文件中，出现数据格式错误的原始记录。为了防止字段长度过大，限制字段的长度不超过1024 byte。 |
| detail     | text                     | 详细错误信息。                                               |
| columnname | varchar                  | 在数据源文件中，出现数据格式错误的字段名称。仅8.2.1.100及以上版本支持。              |
| errcode    | varchar                  | 出错信息对应的错误码，使用sqlstate错误码。仅8.2.1.100及以上版本支持。           |
| queryid    | bigint                   | 执行copy的sql语句id，用于唯一标识一条sql语句。仅8.2.1.100及以上版本支持。       |
   
#### pg_stat_get_status(tid, num_node_display)
描述：查询当前实例中工作线程（backend thread）以及辅助线程（auxiliary thread）的阻塞等待情况，其返回结果的详细含义参见PG_THREAD_WAIT_STATUS视图。输入参数含义如下：
- tid：表示线程ID，bigint类型。如果为NULL，则返回所有工作线程和辅助线程的等待情况；否则只返回指定ID线程的等待情况。
- num_node_display：integer类型。对于等待状态为"wait node"的记录，指定其wait_status列中显示的被等待节点的最大数量。
  - 如果为空或者小于等于0，则只显示一个被等待节点。
  
  - 如果大于20，则最多只显示20个节点。
  
  - 如果大于0且小于等于20，则显示数量为num_node_display和实际被等待节点数量的最小者。例如查询"SELECT \* from pg_stat_get_status(NULL, 10)"，如果实际被等待节点数量大于10，则只随机显示其中10个节点名称，如果实际被等待节点数量小于等于10，则显示全部被等待节点名称。当实际被等待节点数量大于显示数量时，被显示的节点名称为随机挑选。
   
返回值类型：record
#### pgxc_get_thread_wait_status(num_node_display)
描述：查询集群各个节点上所有SQL语句产生的线程之间的调用层次关系，以及各个线程的阻塞等待状态。其返回结果的详细含义参见PGXC_THREAD_WAIT_STATUS视图。输入参数num_node_display的类型和含义与上述函数pg_stat_get_status相同。
返回值类型：record
#### pgxc_os_run_info()
描述：查询集群中各节点上操作系统运行的状态信息。
返回值类型：record
表4pgxc_os_run_info()函数返回字段 
| 名称         | 类型      | 描述                |
|:---|:---|:---|
| id         | integer | 编号。               |
| name       | text    | 操作系统运行状态名称。       |
| value      | numeric | 操作系统运行状态值。        |
| comments   | text    | 操作系统运行状态注释。       |
| cumulative | boolean | 操作系统运行状态的值是否为累加值。 |
   
#### get_instr_wait_event()
描述：查询当前实例上各类等待状态和事件的统计信息。如果GUC参数enable_track_wait_event为off，则返回0行。
返回值类型：record
表5get_instr_wait_event()函数返回字段 
| 名称              | 类型     | 描述                                                   |
|:---|:---|:---|
| nodename        | name   | 节点名称。                                                |
| type            | text   | 事件的类型，包括STATUS，LOCK_EVENT，LWLOCK_EVENT和IO_EVENT四种类型。 |
| event           | text   | 事件名称。                                                |
| wait            | bigint | 事件发生次数。该字段及以下字段均为进程运行中的累计值。                          |
| failed_wait     | bigint | 等待失败次数。当前版本中只有LOCK和LWLOCK等锁超时或失败才会使用该字段。             |
| total_wait_time | bigint | 该事件总持续时间。                                            |
| avg_wait_time   | bigint | 该事件平均持续时间。                                           |
| max_wait_time   | bigint | 该事件最大等待时间。                                           |
| min_wait_time   | bigint | 该事件最小等待时间。                                           |
   
#### pgxc_wait_events()
描述：查询集群中各节点上各类等待状态和事件的统计信息。如果GUC参数enable_track_wait_event为off，则返回0行。
返回值类型：record
表6pgxc_wait_events()函数返回字段 
| 名称              | 类型     | 描述                                                   |
|:---|:---|:---|
| nodename        | name   | 节点名称。                                                |
| type            | text   | 事件的类型，包括STATUS，LOCK_EVENT，LWLOCK_EVENT和IO_EVENT四种类型。 |
| event           | text   | 事件名称。                                                |
| wait            | bigint | 事件发生次数。该字段及以下字段均为进程运行中的累计值。                          |
| failed_wait     | bigint | 等待失败次数。当前版本中只有LOCK和LWLOCK等锁超时或失败才会使用该字段。             |
| total_wait_time | bigint | 该事件总持续时间。                                            |
| avg_wait_time   | bigint | 该事件平均持续时间。                                           |
| max_wait_time   | bigint | 该事件最大等待时间。                                           |
| min_wait_time   | bigint | 该事件最小等待时间。                                           |
   
#### pgxc_stat_bgwriter()
描述：查询集群中各节点上后端写进程活动的统计信息。
返回值类型：record
表7pgxc_stat_bgwriter()函数返回字段 
| 名称                    | 类型                       | 描述                        |
|:---|:---|:---|
| checkpoints_timed     | bigint                   | 定期执行的检查点数量。               |
| checkpoints_req       | bigint                   | 请求执行的检查点数量。               |
| checkpoint_write_time | double precision         | 检查点期间将文件写入磁盘花费的时间，以毫秒为单位。 |
| checkpoint_sync_time  | double precision         | 检查点期间数据同步到磁盘花费的时间，以毫秒为单位。 |
| buffers_checkpoint    | bigint                   | 检查点期间写入缓冲区的数量。            |
| buffers_clean         | bigint                   | 后端写进程写的缓冲区数量。             |
| maxwritten_clean      | bigint                   | 由于写入缓冲区太多，后端写进程停止清理扫描的次数。 |
| buffers_backend       | bigint                   | 后端直接写入的缓冲区数量。             |
| buffers_backend_fsync | bigint                   | 后端需要fsync的次数。             |
| buffers_alloc         | bigint                   | 分配的缓冲区数量。                 |
| stats_reset           | timestamp with time zone | 统计重置的时间。                  |
   
#### pgxc_stat_replication()
描述：查询集群中各节点上日志同步的状态信息。
返回值类型：record
表8pgxc_stat_replication()函数返回字段 
| 名称                       | 类型                       | 描述                    |
|:---|:---|:---|
| pid                      | bigint                   | 线程的PID。               |
| usesysid                 | oid                      | 用户系统ID。               |
| usename                  | name                     | 用户名。                  |
| application_name         | text                     | 程序名称。                 |
| client_addr              | inet                     | 客户端地址。                |
| client_hostname          | text                     | 客户端名。                 |
| client_port              | integer                  | 客户端端口号。               |
| backend_start            | timestamp with time zone | 程序启动时间。               |
| state                    | text                     | 日志复制的状态（追赶状态或一致的流状态）。 |
| sender_sent_location     | text                     | 发送端发送日志位置。            |
| receiver_write_location  | text                     | 接收端write日志位置。         |
| receiver_flush_location  | text                     | 接收端flush日志位置。         |
| receiver_replay_location | text                     | 接收端replay日志位置。        |
| sync_priority            | integer                  | 同步复制的优先级（0表示异步）。      |
| sync_state               | text                     | 同步状态（异步复制、同步复制或潜在同步）。 |
   
#### pgxc_replication_slots()
描述：查询集群中各DN上复制的状态信息。
返回值类型：record
表9pgxc_replication_slots()函数返回字段 
| 名称            | 类型      | 描述                |
|:---|:---|:---|
| slot_name     | text    | 复制节点的名称。          |
| plugin        | name    | 逻辑复制槽对应的输出插件名。    |
| slot_type     | text    | 复制节点的类型。          |
| datoid        | oid     | 复制节点的数据库OID。      |
| database      | name    | 复制节点的数据库名称。       |
| active        | boolean | 复制节点是否为激活状态。      |
| xmin          | xid     | 复制节点事务标识。         |
| catalog_xmin  | text    | 逻辑复制槽对应的最早解码事务标识。 |
| restart_lsn   | text    | 复制节点的Xlog文件信息。    |
| dummy_standby | boolean | 复制节点是否为假备。        |
   
#### pgxc_settings()
描述：查询集群中各节点上运行时参数的相关信息。
返回值类型：record
表10pgxc_settings()函数返回字段 
| 名称             | 类型       | 描述                                                             |
|:---|:---|:---|
| name           | text     | 参数名称。                                                          |
| setting        | text     | 参数当前值。                                                         |
| unit           | text     | 参数的隐式结构。                                                       |
| category       | text     | 参数的逻辑组。                                                        |
| short_desc     | text     | 参数的简单描述。                                                       |
| extra_desc     | text     | 参数的详细描述。                                                       |
| context        | text     | 设置参数值的上下文，包括internal，postmaster，sighup，backend，superuser和user。 |
| vartype        | text     | 参数类型，包括bool，enum，integer，real和string。                          |
| source         | text     | 参数的赋值方式。                                                       |
| min_val        | text     | 参数最小值。如果参数类型不是数值型，那么该字段值为null。                                 |
| max_val        | text     | 参数最大值。如果参数类型不是数值型，那么该字段值为null。                                 |
| enumvals       | text\[\] | enum类型参数合法值。如果参数类型不是enum型，那么该字段值为null。                         |
| boot_val       | text     | 数据库启动时参数默认值。                                                   |
| reset_val      | text     | 数据库重置时参数默认值。                                                   |
| sourcefile     | text     | 设置参数值的配置文件。如果参数不是通过配置文件赋值，那么该字段值为null。                         |
| sourceline     | integer  | 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值，那么该字段值为null。                      |
| sync_to_stream | boolean  | 标记是否在Stream线程同步设置参数的变更情况。该字段仅9.1.1.300及以上集群版本支持。               |
   
#### pgxc_instance_time()
描述：查询集群中各节点的运行时间统计信息及各执行阶段所消耗时间。
返回值类型：record
表11pgxc_instance_time()函数返回字段 
| 名称        | 类型      | 描述        |
|:---|:---|:---|
| stat_id   | integer | 类型编号。     |
| stat_name | text    | 运行时间类型名称。 |
| value     | bigint  | 运行时间值。    |
   
#### pg_stat_get_redo_stat()
描述：查询当前节点上的XLOG重做统计信息。
返回值类型：record
表12pg_stat_get_redo_stat()函数返回字段 
| 名称        | 类型     | 描述        |
|:---|:---|:---|
| phywrts   | bigint | 物理写次数。    |
| phyblkwrt | bigint | 物理写块数。    |
| writetim  | bigint | 物理写消耗时间。  |
| avgiotim  | bigint | 平均每次写入时间。 |
| lstiotim  | bigint | 上一次写入时间。  |
| miniotim  | bigint | 最小写入时间。   |
| maxiowtm  | bigint | 最大写入时间。   |
   
#### pgxc_redo_stat()
描述：查询集群中各节点上的XLOG重做统计信息。
返回值类型：record
表13pgxc_redo_stat()函数返回字段 
| 名称        | 类型     | 描述        |
|:---|:---|:---|
| phywrts   | bigint | 物理写次数。    |
| phyblkwrt | bigint | 物理写块数。    |
| writetim  | bigint | 物理写消耗时间。  |
| avgiotim  | bigint | 平均每次写入时间。 |
| lstiotim  | bigint | 上一次写入时间。  |
| miniotim  | bigint | 最小写入时间。   |
| maxiowtm  | bigint | 最大写入时间。   |
   
#### get_local_rel_iostat()
描述：查询当前实例上磁盘读写的统计信息。
返回值类型：record
表14get_local_rel_iostat()函数返回字段 
| 名称        | 类型     | 描述     |
|:---|:---|:---|
| phyrds    | bigint | 读磁盘次数。 |
| phywrts   | bigint | 写磁盘次数。 |
| phyblkrd  | bigint | 读磁盘页数。 |
| phyblkwrt | bigint | 写磁盘页数。 |
   
#### pgxc_rel_iostat()
描述：查询集群中各节点上磁盘读写的统计信息。
返回值类型：record
表15pgxc_rel_iostat()函数返回字段 
| 名称        | 类型     | 描述     |
|:---|:---|:---|
| phyrds    | bigint | 读磁盘次数。 |
| phywrts   | bigint | 写磁盘次数。 |
| phyblkrd  | bigint | 读磁盘页数。 |
| phyblkwrt | bigint | 写磁盘页数。 |
   
#### get_node_stat_reset_time()
描述：返回当前实例统计信息被重置的时间。
返回值类型：timestamptz
 #### pgxc_node_stat_reset_time()
描述：查询集群中各节点统计信息被重置的时间。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
实例正常运行过程中，内存中的各类统计数值会逐渐累加，以下情况会导致内存中的统计数值被重置为0：
- 实例重启或集群发生了切换；
- 数据库Database被删除（drop）；
- 用户执行了重置操作，如执行pgstat_recv_resetcounter函数会将数据库中的统计计数器清零，执行reset_instr_unique_sql函数会将Unique SQL数据清零。
 
如果发生了以上事件，DWS会记录统计信息被重置的时间，可通过get_node_stat_reset_time函数查询。
#### pgxc_parallel_query(text, text)
描述：在指定类型的数据实例上执行指定的SQL查询语句，并把查询语句的结果返回给当前CN。该函数8.1.2及以上版本支持。
第一个参数text，SQL语句在哪些实例上执行。当前支持的有效入参是 'dn'， 'datanode'，'cn'， 'coordinator'， 'all'， 其它值会导致函数执行报错。其中 'dn'， 'datanode'表示在所有DN上执行，'cn'， 'coordinator'表示在所有CN上执行， all表示在所有的CN和所有的DN上执行。
第二个参数text，需要发往远程节点执行的SQL语句，函数内部会对SQL语句中查询的对象进行校验，不支持用户表、分布式表和自定义的多结果集函数。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 该函数功能仅为便于开发人员高效地收集集群内实例执行信息或者状态的视图，不建议用户直接使用。
- 该函数为多结果集函数，返回的数据类型为record，所以需要在函数调用后面增加AS语句显式的指出输出的列名和数据类型，如下所示：
  ```
  SELECT * FROM pgxc_parallel_query('all', 'select node_name, db_name, thread_name, query_id, tid, lwtid, ptid, tlevel, smpid, wait_status, wait_event from pg_thread_wait_status') AS (node_name text, db_name text, thread_name text, query_id bigint, tid bigint, lwtid integer , ptid integer, tlevel integer , smpid integer, wait_status text, wait_event text);
  ```
  
- 函数第二个参数指定的SQL语句输出结果的数据类型必须跟AS后面指明的数据类型一致，否则执行时可能会因为类型不匹配而报错。
- 函数第二个参数指定的SQL语句中不能触发跨节点的查询动作，否则会触发执行报错。
- 函数第二个参数指定的SQL语句只能是SELECT/UPDATE/DELETE/INSERT语句中的一种，且存在如下限制：
  - 不支持语句中有returning语句。
  
  - 调用函数用户需具有SQL语句中对象相应的操作权限。
  
  - 如果是INSERT语句，不支持INSERT OVERWRITE、UPSERT和INSERT INTO。
  
  - 对于UPDATE/DELETE/INSERT语句，只允许初始化用户在就地升级模式下或者管理员用户在重分布模式下执行；要求语句在每个实例上修改的记录数相同，否则执行会报错；函数会输出一条一列bigint类型的数值，此数值表示语句在每个实例上操作的记录数。
    ```
    SELECT * FROM pgxc_parallel_query('cn', 'UPDATE pg_partition SET relpages = 0') AS (updated bigint);
    ```
    
   
 
#### generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)
描述：创建负荷分析报告。
输入参数含义如下：
- begin_snap_id，end_snap_id：生成报告的起止快照ID，bigint型，要求begin_snap_id \< end_snap_id，并且起止快照的时间没有交集。判断快照时间是否有交集可通过查询dbms_om.snapshot表格select s1.end_ts \< s2.start_ts from (select \* from dbms_om.snapshot where snapshot_id=end_snap_id) as s2;，如果返回true则没有交集，反之有交集。
- report_type：报告类型，cstring型，包括"summary","detail","all"三种类型。
- report_scope：报告范围，cstring型，包括"cluster"和"node"两种。
- node_name：节点名称，cstring型，如果report_scope="node"，该参数必须是pg_catalog. pgxc_node表格中node_name字段里的CN或DN节点名称。
返回值类型：text
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 该函数只有数据库管理员SYSADMIN才有权执行，非管理员执行会提示无权限。
- 该函数只能在CN上执行，在DN上执行会提示错误："WDR report can only be created on coordinator."。
- 如果生成报告成功，会返回："Report %s has been generated"。
- 生成报告的两个快照期间不能发生统计信息重置事件，否则会提示错误："Instance reset time is different"。引起统计信息重置的事件参见[pgxc_node_stat_reset_time]函数。
 
#### wdr_xdb_query(db_name text, snapshot_id bigint, view_name text)
描述：查询指定数据库下的指定视图。有的视图在不同数据库中查询结果不同，例如global_table_stat视图用于查询表格的统计信息，由于不同数据库下表格不同，在不同数据库中查询该视图得到的结果也不同。wdr_xdb_query函数可以在当前连接中访问db_name指定的数据库，并在该数据库中查询view_name指定的视图。输入参数含义如下：
- db_name：指定的数据库名称，text型。
- snapshot_id：快照ID，bigint型，参见"性能视图快照"。
- view_name：指定视图名称，text型。视图名称必须在如下白名单中：
  - global_table_stat
  
  - global_table_change_stat
  
  - global_column_table_io_stat
  
  - global_row_table_io_stat 返回值类型：record，其第一列为snapshot_id bigint，第二列为db_name text，其他列的名称、类型和顺序与view_name指定的视图相同。
    示例：
    ```
    select snapshot_id, db_name, schemaname, relname, distribute_mode, seq_scan ,seq_tuple_read ,index_scan ,index_tuple_read ,tuple_inserted
    ,tuple_updated ,tuple_deleted ,tuple_hot_updated ,live_tuples ,dead_tuples from wdr_xdb_query('postgres'::text, 1, 'global_table_stat'::text) as i(snapshot_id bigint, db_name text, schemaname name, relname name, distribute_mode char, seq_scan bigint, seq_tuple_read bigint, index_scan bigint, index_tuple_read bigint, tuple_inserted bigint, tuple_updated bigint, tuple_deleted bigint, tuple_hot_updated bigint, live_tuples bigint, dead_tuples bigint);
    ```
    ![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
    - 该函数仅8.1.2及以上版本支持。
    
    - 该函数只有数据库管理员SYSADMIN才有权执行，非管理员执行会提示无权限。
    
    - 该函数只能查询白名单中的视图，如果查询其他视图，会报错："Input view name is invalid."。
      
   
 
#### vac_fileclear_relation(oid)
描述：用于强制清理指定列存表中被VACUUM重写的文件，完成空间回收。
参数：列存表oid。
返回值类型：integer
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 使用本函数前需要设置参数colvacuum_threshold_scale_factor，并确保VACUUM对指定列存表的文件完成重写后，才会清理文件并回收空间。
- 本函数将对指定的列存表施加排他锁。
- 延迟DDL开启后，此函数无法使用。
 
#### vac_fileclear_all_relation()
描述：用于强制清理所有列存表中被VACUUM重写的文件，完成空间回收。
返回值类型：record
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
延迟DDL开启后，此函数无法使用。
#### get_col_file_info(table_name)
描述：查询指定列存表的空CU文件数和总CU文件数，该函数仅8.2.0及以上集群版本支持。
参数：列存表名。
返回值类型：int
返回值字段：
- total_file_num int：总CU文件数，范围为-1\~INT_MAX，返回-1时表示表类型不支持等原因的失败，0\~INT_MAX为总文件数。
- empty_file_num int：空CU文件数，范围为-1\~INT_MAX，返回-1时表示表类型不支持等原因的失败，0\~INT_MAX为空文件数。
示例：
```
call get_col_file_info('t4');
 total_file_num | empty_file_num
----------------+----------------
             10 |              7
(1 row)
```
#### get_all_col_file_info()
描述：查询所有列存表的空CU文件数和总CU文件数，该函数仅8.2.0及以上集群版本支持。
返回值类型：record
返回值字段：
- space_name text：列存表所属schema
- table_name text：列存表名
- total_file_num int：总CU文件数，范围为-1\~INT_MAX，返回-1时表示表类型不支持等原因的失败，0\~INT_MAX为总文件数。
- empty_file_num int：空CU文件数，范围为-1\~INT_MAX，返回-1时表示表类型不支持等原因的失败，0\~INT_MAX为空文件数。
示例：
```
call get_all_col_file_info();
 space_name | table_name | total_file_num | empty_file_num
------------+------------+----------------+----------------
 public     | t4         |             10 |              7
 public     | t2         |              1 |              1
 public     | t1         |              3 |              0
(3 rows)
```
#### pg_get_bucket_epoch(relid)
描述：查询v3表在当前节点上的epoch值。对于分区表，需要输入父表oid，将打印所有子分区的epoch值。该函数只支持在写VW上执行。该函数仅9.1.0.200及以上集群版本支持。
返回值类型：record
返回值字段：
- relfilenode oid：列存非分区表的relfilenode。对于分区表，此值为0。
- partfilenode oid：列存分区表的relfilenode。对于非分区表，此值为0。
- epoch xid：当前节点上该表对应的epoch值。
示例：
```
select * from pg_get_bucket_epoch(2147483732);
 relfilenode | partfilenode |  epoch
-------------+--------------+--------
  2137383742 |            0 | 1000001
(1 row)
```
#### pg_get_bucket_epoch(tablespaceid, databaseid, relfilenode)
描述：查询v3表在当前节点上的epoch值。输入v3表所在的表空间oid，数据库oid和表对应的relfilenode。该函数在写VW或读VW上均可执行。该函数仅9.1.0.200及以上集群版本支持。
返回值类型：xid
返回值字段：
epoch xid：当前节点上该表对应的epoch值。
示例：
```
select * from pg_get_bucket_epoch(2147483729, 16792, 2147483732);
 epoch
-------
1000001
(1 row)
```
#### pgxc_get_bucket_epoch(tablespaceid, databaseid, relfilenode)
描述：查询v3表在所有dn节点上的epoch值。输入v3表所在的表空间oid，数据库oid和表对应的relfilenode。该函数在写VW或读VW上均可执行。该函数仅9.1.0.200及以上集群版本支持。
返回值类型：record
返回值字段：
- nodename text：节点名称。
- epoch xid：当前节点上该表对应的epoch值。
示例：
```
select * from pgxc_get_bucket_epoch(2147483729, 16792, 2147483732);
  nodename |  epoch
-----------+---------
 datanode3 | 1000001
 datanode1 |       0
 datanode2 |       0
(1 row)
```
#### pgxc_check_bucket_info(tablename regclass, stoponerror)
描述：检查指定v3表所在的所有DN上的cuid、fileid映射信息是否正确，需在CN上执行。该函数仅9.1.1.200及以上集群版本支持。
参数：
tablename，表示表名。
stoponerror为可选参数，默认为false。
- 设置为true时，有一个DN上有错误信息时就报ERROR，不再检查其他DN。
- 设置为false时，会检测所有DN上cuid、fileid。
 
返回值类型：SETOF record
表16返回值字段 
| 名称        | 类型   | 描述           |
|:---|:---|:---|
| nodename  | text | 节点名称。        |
| is_valid  | bool | 当前节点检查是否通过。  |
| error_msg | text | 显示检查结果的错误信息。 |
   
示例：查看v3表所在的所有DN上的cuid、fileid映射信息是否正确。
```
SELECT * FROM pgxc_check_bucket_info('t1');
 nodename  | is_valid | error_msg 
-----------+----------+-----------
 datanode2 | t        | 
 datanode1 | t        | 
(2 rows)
```
#### current_temp_schema()
描述：返回当前会话的临时schema。如果当前会话没有临时schema，则返回空。该函数仅8.2.1.220及以上集群版本支持。
返回值类型：name
示例：
```
select current_temp_schema();
 current_temp_schema
---------------------
(1 row)
```
```
create temp table tmp1(a int,b int) distribute by hash(a);
CREATE TABLE
select current_temp_schema();
           current_temp_schema
------------------------------------------
 pg_temp_coordinator1_2_2_140718823485088
(1 row)
```
#### get_volatile_pg_class()
描述：获取当前会话中所有volatile临时表相关的pg_class元数据。该函数仅8.2.0及以上集群版本支持。
返回值类型：record
返回值字段：
- oid：返回volatile临时表的oid。
- 其他字段：同pg_class系统表中的基础字段(不包括系统隐藏字段)。
 
#### get_volatile_pg_class(relname text)
描述：获取当前会话中指定volatile临时表相关的pg_class元数据。该函数仅8.2.0及以上集群版本支持。
参数：当前会话中volatile临时表的表名。
返回值类型：record
返回值字段：
- oid：返回volatile临时表的oid。
- 其他字段：同pg_class系统表中的基础字段(不包括系统隐藏字段)。
示例：
```
SELECT * FROM get_volatile_pg_class('tx1');
  oid  | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | reltoastidxid | reldeltarelid |
 reldeltaidx | relcudescrelid | relcudescidx | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasrules | relhastriggers | relhassub
class | relcmprs | relhasclusterkey | relrowmovement | parttype | relfrozenxid | relacl |            reloptions            | relreplident | relfrozenxid64
-------+---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+---------------+---------------+
-------------+----------------+--------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-------------+----------------+----------
------+----------+------------------+----------------+----------+--------------+--------+----------------------------------+--------------+----------------
 16772 | tx1     |        16770 |   16774 |         0 |       10 |     0 |       16772 |          1665 |        0 |         0 |             0 |         16775 |             0 |             0 |
           0 |              0 |            0 | f           | f           | v              | r       |        2 |         0 | f          | f          | f           | f              | f
      | 1        | f                | f              | n        | 11815        |        | {orientation=row,compression=no} | d            |          11815
(1 row)
```
#### get_volatile_pg_attribute()
描述：获取当前会话中所有volatile临时表相关的pg_attribute元数据。该函数仅8.2.0及以上集群版本支持。
返回值类型：record
返回值字段：
- oid：返回该列信息的oid。
- 其他字段：同pg_attribute系统表中的基础字段（不包括系统隐藏字段）。
 
#### get_volatile_pg_attribute(relname text, attrname text)
描述：获取当前会话中指定volatile临时表相关的pg_attribute元数据。该函数仅8.2.0及以上集群版本支持。
参数：
- relname：表名(必须在当前会话中)。
- attrname：列名。
返回值类型：record
返回值字段：
- oid：返回该列信息的oid。
- 其他字段：同pg_attribute系统表中的基础字段（不包括系统隐藏字段）。
示例：
```
SELECT * FROM get_volatile_pg_attribute('tx1', 'b');
 attrelid | attname | atttypid | attstattarget | attlen | attnum | attndims | attcacheoff | atttypmod | attbyval | attstorage | attalign | attnotnull | atthasdef | attisdropped | attislocal |
 attcmprmode | attinhcount | attcollation | attacl | attoptions | attfdwoptions | attinitdefval | attkvtype
----------+---------+----------+---------------+--------+--------+----------+-------------+-----------+----------+------------+----------+------------+-----------+--------------+------------+
-------------+-------------+--------------+--------+------------+---------------+---------------+-----------
    16772 | b       |       25 |            -1 |     -1 |      2 |        0 |          -1 |        -1 | f        | x          | i        | f          | f         | f            | t          |
 127         |           0 |          100 |        |            |               |               | 0
(1 row)
```
#### pg_get_publication_tables(pubname text)
描述：根据发布的名称，返回对应发布要发布的表的relid列表。该函数仅8.2.0.100及以上集群版本支持。
参数：pubname
返回值类型：set of oid
示例：
```
SELECT * FROM pg_get_publication_tables('mypub');
 relid 
-------
 16757
 16776
(2 rows)
```
#### pg_relation_is_publishable(relname regclass)
描述：检查一个表是否可以发布。该函数仅8.2.0.100及以上集群版本支持。
参数：relname
返回值类型：boolean
示例：
```
SELECT * FROM pg_relation_is_publishable('t1');
 pg_relation_is_publishable 
----------------------------
 t
(1 row)
```
#### get_col_cu_info(schema_name text, table_name text, row_count int8, dirty_percent int8)
描述：查询某张列存表的CU信息，每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。
参数：模式名（必选），表名（必选），小CU的行数阈值（可选，默认200，取值范围为1\~60000）, 脏CU的删除百分比阈值（可选，默认70，取值范围1\~100）。
返回值类型：record
返回值字段：
node_name：DN节点名。
part_name：分区名，普通表此列为空。
zero_size_cu_count：cuSize=0，且行数小于等于row_count的CU数。
small_cu_count：cuSize=ALIGNOF_CUSIZE(8192)，且行数小于等于row_count的CU数。
dirty_cu_count: 因delete，deadtuple占比超过dirty_percent的CU数。
total_cu_count：总CU数。
small_cu_size：8kCU的总大小。
total_cu_size：总CU大小。
示例：
```
SELECT * FROM get_col_cu_info('public','hs_part');
 node_name | part_name | zero_size_cu_count | small_cu_count | dirty_cu_count | total_cu_count | small_cu_size | total_cu_size
-----------+-----------+--------------------+----------------+----------------+----------------+---------------+---------------
 dn_1      | p1        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
 dn_1      | p2        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
 dn_1      | p3        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
(3 rows)
 SELECT * FROM get_col_cu_info('public','hs_part', 200, 90);
 node_name | part_name | zero_size_cu_count | small_cu_count | dirty_cu_count | total_cu_count | small_cu_size | total_cu_size
-----------+-----------+--------------------+----------------+----------------+----------------+---------------+---------------
 dn_1      | p1        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
 dn_1      | p2        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
 dn_1      | p3        |                  3 |              0 |              0 |              3 | 0 bytes       | 0 bytes
(3 rows)
```
#### get_col_file_vacuum_info(schema_name text, table_name text, force_get_rewritten_file_num bool)
描述：查询某张列存表的文件vacuum相关信息，每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。
参数：模式名（必选），表名（必选），是否强制获取准确的可清理文件数（必选，默认为false）
返回值类型：record
返回值字段：
node_name：DN节点名。
part_name：分区名，普通表此列为空。
total_file_num：总CU文件数。
rewritable_file_num：可重写，但还未重写的文件数。
rewritten_file_num：已重写未清理文件数，此值来源于内存态ClearCache，若由于重启等原因ClearCache丢失，可通过设置force_get_rewritten_file_num=true，消耗额外的时间，强制获取准确的可清理文件数。
empty_file_num：已清理文件数。
示例：
```
SELECT * FROM get_col_file_vacuum_info('public','pa',false);
 node_name | part_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num
-----------+-----------+----------------+---------------------+--------------------+----------------
 datanode1 | pa1       |              1 |                   0 |                  0 |              0
 datanode1 | pa2       |              1 |                   0 |                  0 |              0
 datanode2 | pa1       |              1 |                   0 |                  0 |              0
 datanode2 | pa2       |              1 |                   0 |                  0 |              0
 datanode3 | pa1       |              1 |                   0 |                  0 |              0
 datanode3 | pa2       |              1 |                   0 |                  0 |              0
(6 rows)
```
#### get_col_file_vacuum_info(schema_name text, table_name text, colvacuum_threshold_scale_factor int)
描述：查询某张列存表的文件vacuum相关信息，每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。
参数：模式名（必选），表名（必选），colvacuum_threshold_scale_factor（必选，0-100为dead tuple的比例值）
返回值类型：record
返回值：
node_name：DN节点名。
part_name：分区名，普通表此列为空。
total_file_num：总CU文件数。
rewritable_file_num：可重写，但还未重写的文件数。
rewritten_file_num：已重写未清理文件数，此值来源于内存态ClearCache，若由于重启等原因ClearCache丢失，可通过设置force_get_rewritten_file_num=true，消耗额外的时间，强制获取准确的可清理文件数。
empty_file_num：已清理文件数。
示例：
```
SELECT * FROM get_col_file_vacuum_info('public','pa',10);
 node_name | part_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num
-----------+-----------+----------------+---------------------+--------------------+----------------
 datanode1 | pa1       |              1 |                   0 |                  0 |              0
 datanode1 | pa2       |              1 |                   0 |                  0 |              0
 datanode2 | pa1       |              1 |                   0 |                  0 |              0
 datanode2 | pa2       |              1 |                   0 |                  0 |              0
 datanode3 | pa1       |              1 |                   0 |                  0 |              0
 datanode3 | pa2       |              1 |                   0 |                  0 |              0
(6 rows)
```
#### get_all_col_cu_info(row_count int8)
描述：查询全库所有列存表的CU信息。该函数仅8.2.0.100及以上集群版本支持。
参数：小CU的行数阈值（可选，默认值200，取值范围为1\~60000。）
返回值类型：record
返回值字段：
node_name：DN节点名。
schema_name：模式名。
table_name：表名。
zero_size_cu_count：cuSize=0，且行数小于等于row_count的CU数。
small_cu_count：cuSize=ALIGNOF_CUSIZE(8192)，且行数小于等于row_count的CU数。
total_cu_count：总CU数。
small_cu_size：8kCU的总大小。
total_cu_size：总CU大小。
示例：
```
SELECT * FROM get_all_col_cu_info(200);
 node_name | schema_name |      table_name      | zero_size_cu_count | small_cu_count | total_cu_count | small_cu_size | total_cu_size
-----------+-------------+----------------------+--------------------+----------------+----------------+---------------+---------------
 datanode1 | public      | udi_48076            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
 datanode1 | public      | udi_48077            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
 datanode2 | public      | udi_48076            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
 datanode2 | public      | udi_48077            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
 datanode3 | public      | udi_48076            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
 datanode3 | public      | udi_48077            |                  5 |              1 |              6 | 8192 bytes    | 8192 bytes
(6 rows)
```
#### get_all_col_file_vacuum_info(force_get_rewritten_file_num bool)
描述：查询全库所有列存表的文件vacuum相关信息。该函数仅8.2.0.100及以上集群版本支持。
参数：是否强制获取准确的可清理文件数（必选，true或false）
返回值类型：record
返回值字段：
node_name：DN节点名。
schema_name：模式名。
table_name：表名。
total_file_num：总CU文件数。
rewritable_file_num：可重写，但还未重写的文件数。
rewritten_file_num：已重写未清理文件数，此值来源于内存态ClearCache，若由于重启等原因ClearCache丢失，可通过设置force_get_rewritten_file_num=true，消耗额外的时间，强制获取准确的可清理文件数。
empty_file_num：已清理文件数。
示例：
```
SELECT * FROM get_all_col_file_vacuum_info(false);
 node_name | schema_name |      table_name      | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num
-----------+-------------+----------------------+----------------+---------------------+--------------------+----------------
 datanode1 | public      | udi_57373            |              2 |                   0 |                  0 |              1
 datanode1 | public      | udi_57374            |              2 |                   0 |                  0 |              1
 datanode2 | public      | udi_57373            |              2 |                   0 |                  0 |              1
 datanode2 | public      | udi_57374            |              2 |                   0 |                  0 |              1
 datanode3 | public      | udi_57373            |              2 |                   0 |                  0 |              1
 datanode3 | public      | udi_57374            |              2 |                   0 |                  0 |              1
```
#### show_tsc_info()
描述：查询当前数据库节点已获取的TSC（TimeStamp-Counter）信息。该函数仅8.2.1及以上集群版本支持。
返回值类型：record
表17返回值字段 
| 名称                    | 类型      | 描述                 |
|:---|:---|:---|
| node_name             | text    | 节点名称。              |
| tsc_mult              | bigint  | TSC换算乘数。           |
| tsc_shift             | bigint  | TSC换算位移数。          |
| tsc_frequency         | float8  | TSC频率。             |
| tsc_use_frequency     | boolean | 是否使用TSC频率进行时间换算。   |
| tsc_ready             | boolean | 是否可以使用TSC频率进行时间换算。 |
| tsc_scalar_error_info | text    | 获取TSC换算信息的错误信息。    |
| tsc_freq_error_info   | text    | 获取TSC频率的错误信息。      |
   
示例：
```
SELECT * FROM show_tsc_info();  
  node_name   | tsc_mult | tsc_shift | tsc_frequency | tsc_use_frequency | tsc_ready |     tsc_scalar_error_info     | tsc_freq_error_info
--------------+----------+-----------+---------------+-------------------+-----------+-------------------------------+---------------------
 coordinator1 |          |           |          2400 | t                 | t         | TSC scalar is not initialized |
```
#### get_tsc_info()
描述：重新获取当前数据库节点的TSC（TimeStamp-Counter）信息。该函数仅8.2.1及以上集群版本支持。
返回值类型：record
表18返回值字段 
| 名称                    | 类型      | 描述                 |
|:---|:---|:---|
| node_name             | text    | 节点名称。              |
| tsc_mult              | bigint  | TSC换算乘数。           |
| tsc_shift             | bigint  | TSC换算位移数。          |
| tsc_frequency         | float8  | TSC频率。             |
| tsc_use_frequency     | boolean | 是否使用TSC频率进行时间换算。   |
| tsc_ready             | boolean | 是否可以使用TSC频率进行时间换算。 |
| tsc_scalar_error_info | text    | 获取TSC换算信息的错误信息。    |
| tsc_freq_error_info   | text    | 获取TSC频率的错误信息。      |
   
示例：
```
SELECT * FROM get_tsc_info();  
  node_name   | tsc_mult | tsc_shift | tsc_frequency | tsc_use_frequency | tsc_ready |     tsc_scalar_error_info     | tsc_freq_error_info
--------------+----------+-----------+---------------+-------------------+-----------+-------------------------------+---------------------
 coordinator1 |          |           |          2400 | t                 | t         | TSC scalar is not initialized |
```
#### test_tsc_info(time float8, loops int)
描述：测试当前节点通过TSC（TimeStamp-Counter）换算时间的准确性。该函数仅8.2.1及以上集群版本支持。
输入参数含义如下：
- time：测试的时间差（单位s），测试时长需要小于或者等于60s
- loops：测试次数，范围值\[1，10\]
返回值类型：record
返回值字段：
- id：循环次数。
- real_time_diff：通过gettimeofday获取的时间差（单位us）。
- est_time_scalar：通过TSC换算信息转换得到的时间差（单位us）。
- est_time_frequency：通过TSC频率转换得到的时间差（单位us）。
示例：
```
SELECT * FROM test_tsc_info(0.01,10);
 id | real_time_diff | est_time_scalar | est_time_frequency
----+----------------+-----------------+--------------------
  1 |          10057 |                 |            10056.9
  2 |          10057 |                 |   10057.4816666667
  3 |          10056 |                 |   10055.2841666667
  4 |          10054 |                 |   10054.4908333333
  5 |          10055 |                 |         10054.2875
  6 |          10055 |                 |   10054.7483333333
  7 |          10055 |                 |         10054.4725
  8 |          10054 |                 |   10054.0766666667
  9 |          10058 |                 |   10058.1016666667
 10 |          10057 |                 |   10056.3733333333
(10 rows)
```
#### gs_set_hold_table_level_oldestxmin()
描述：当开启表级oldestxmin特性后，可以通过该函数将事务标记为长事务，计算任何表的oldestxmin时，会将此事务作为活跃事务计算到oldestxmin中。该函数仅9.1.1.100及以上集群版本支持。
返回值类型：void
以下两种场景可以使用该函数：
1. 该事务是一个潜在的长事务，即运行时间大于old_txn_threshold，并且涉及多张表。
2. 执行语句可能因锁等待等原因，在CN上的执行时间长。如COPY、GDS导入导出场景等。
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
- 长事务指的是运行大于某一时间后还未提交的事务，由GUC参数old_txn_threshold设置，默认为600秒。
- 执行该函数会影响表级oldestxmin的计算规则：无论事务运行时间是否大于old_txn_threshold设置的值或计算的表是否与该事务相关，都会将该事务当作活跃事务，影响所有表的oldestxmin的计算。
- 语句执行完成后建议及时调用gs_unset_hold_table_level_oldestxmin()函数取消标记，否则会影响VACUUM的清理效果。
 
#### gs_unset_hold_table_level_oldestxmin()
描述：当开启表级oldestxmin特性后，可以通过该函数取消标记为长事务的事务。该函数仅9.1.1.100及以上集群版本支持。
返回值类型：void
![](https://support.huaweicloud.com/sqlreference-911-dws/public_sys-resources/note_3.0-zh-cn.png)
长事务指的是运行大于某一时间后还未提交的事务，由GUC参数old_txn_threshold设置，默认为600秒。
