更新时间:2026-10-21 GMT+08:00
分享

其它函数

  • pgxc_pool_check()

    描述:检查连接池中缓存的连接数据是否与pgxc_node一致。

    返回值类型:Boolean

  • pgxc_pool_reload()

    描述:更新连接池中缓存的连接信息。

    返回值类型:Boolean

  • reload_active_coordinator()

    描述:对所有存活的CN,更新连接池中缓存的连接信息。

    返回值类型:void

  • pgxc_lock_for_backup()

    描述:为备份操作给集群加锁,这些备份是为在新增节点上做恢复。

    返回值类型:Boolean

    备注:调用该函数的用户需要具有SYSADMIN权限。

    pgxc_lock_for_backup是在使用gs_dump或gs_dumpall工具备份集群前,用来给集群加锁的。当给集群加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。

  • pg_pool_validate(clear bool, node_name text)

    描述:显示CN到节点node_name之间pooler中无效连接,当clear为true时清理无效连接。

    返回值类型:record

  • gs_validate_node_conn(validate_type cstring, validate_node_name cstring)

    描述:显示或清除当前节点接收来自指定节点的连接。

    返回值类型:record

    表1 gs_validate_node_conn函数参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    validate_type

    cstring

    指定入参类型:

    • 'check':用于显示当前节点接收来自指定节点的连接。
    • 'clear':用于清除当前节点接收来自指定节点的连接。

    输入参数

    validate_node_name

    cstring

    指定节点名称。

    输出参数

    pid

    bigint

    显示当前节点接收来自指定节点连接的线程id(若是线程池线程则为0)。

    输出参数

    sessionid

    bigint

    显示当前节点接收来自指定节点连接的session id(若是非线程池线程则为0)。

    输出参数

    node_name

    text

    显示当前节点接收来自指定节点连接的节点名称。

  • pgxc_pool_connection_status()

    描述:检查pooler连接状态是否正常。

    返回值类型:boolean

  • pg_nodes_memory()

    描述:查看所有节点的内存占用。

    返回值类型:record

  • table_skewness(text)

    描述:查看表数据在所有节点的占比。该函数不支持查询hashbucket表在所有节点的占比。

    参数:表示待查询表的表名,为text类型。

    返回值类型:record

  • table_skewness(text, text, text)

    描述:查看表数据指定列在所有节点的占比。

    参数:表示待查询表的表名、指定列名、指定的表的记录数(默认值为0,查询所有记录),都为text类型。

    返回值类型:record

    返回值说明:节点编号,指定列的数据行数,当前节点数据量相对总数据量的占比。

    示例:

    --返回't'表'a'字段前5行数据在节点上的分布。
    gaussdb=# SELECT table_skewness('t', 'a',5);
     table_skewness
    ----------------
     (1,3,60.000%)
     (2,2,40.000%)
    (2 rows)
    
    --返回't'表'a'字段所有数据在节点上的分布。
    gaussdb=# SELECT table_skewness('t', 'a');
     table_skewness
    ----------------
     (1,7,70.000%)
     (2,2,20.000%)
     (0,1,10.000%)
    (3 rows)
  • table_skewness_with_schema(text, text)

    描述:查看表数据在所有节点的占比,与table_skewness(text)作用相同。

    参数:表示待查询表的schema名称和表名,为text类型。

    返回值类型:record

  • table_data_skewness(colrecord, type)

    描述:查看表数据所在节点。

    参数:

    • colrecord:表示待查询表的列名记录,为record类型。
    • type:hash分布类型,其取值请参见PGXC_CLASS系统表中pclocatortype字段的描述。

    返回值类型:smallint

    示例:

    --返回'test1'表的'index'字段数据所在的节点。
    gaussdb=# SELECT table_data_skewness(row(index), 'R') FROM test1;
     table_data_skewness
    ---------------------
                       4
                       3
                       1
                       2
    (4 rows)
  • table_distribution(schemaname text, tablename text)

    描述:查看指定表在各个节点上占用的存储空间。

    参数:表示待查询表的模式名和表名,均为text类型。

    返回值类型:record

    • 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。
    • table_distribution性能比table_skewness更优,尤其是在大数据量场景下,请优先考虑使用table_distribution函数。
    • 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
  • table_distribution()

    描述:查看当前库中所有表在各节点的存储空间分布情况。

    返回值类型:record

    • 使用本函数涉及全库表信息查询,需要具备管理员权限。
    • 当前基于table_distribution()函数,GaussDB提供PGXC_GET_TABLE_SKEWNESS视图(请参见PGXC_GET_TABLE_SKEWNESS)进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。
  • plan_seed()

    描述:获取前一次查询语句的seed值(内部使用)。

    返回值类型:int

  • pg_stat_get_env()

    描述:获取当前节点的环境变量信息,仅sysadmin和monitor admin可以访问。

    返回值类型:record

    示例:

    gaussdb=# SELECT pg_stat_get_env();
                                                                                  pg_stat_get_env
    ---------------------------------------------------------------------------------------------------------------------------------------
     (coordinator1,localhost,144773,49100,/data1/GaussDB_Kernel_TRUNK/install,/data1/GaussDB_Kernel_TRUNK/install/data/coordinator1,gs_log)
    (1 row)
  • pg_stat_get_thread()

    描述:提供当前节点下线程的状态信息,sysadmin和monitor admin用户可以查看所有线程的信息,普通用户只能查看本用户的线程信息。

    返回值类型:record

  • pgxc_get_os_threads()

    描述:提供整个集群中所有正常节点下的线程状态信息。

    返回值类型:record

  • pg_stat_get_sql_count()

    描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果和DDL/DML/DCL语句的计数结果。DDL语句包括“TRUNCATE”、“CLUSTER”、“VACUUM”、“ANALYZE”、“CREATE”(不包括“CREATE ROLE”和“CREATE USER”)、“DROP”(不包括“DROP ROLE”和“DROP USER”)、“ALTER”(不包括“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”和“ALTER SESSION”)、“REINDEX”、“COMMENT”、“BARRIER”、“SECURITY LABEL ON”、“PURGE”、“TIMECAPSULE”、“REFRESH”、“IMPDP”和“EXPDP”语句。DML语句包括“SELECT”、“UPDATE”、“INSERT”、“DELETE”、“MERGE”、“PREPARE”、“EXPLAIN”、“LOCK”、“COPY”、“ANONYMOUS”、“DELTA”、“EXECUTE”、“MOVE”、“FETCH”、“CLOSE”、“DEALLOCATE”、“DECLARE”、“CURSOR”和“LOAD”语句。DCL语句包括“SHOW”、“CREATE ROLE”、“CREATE USER”、“DROP ROLE”、“DROP USER”、“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”、“GRANT”、“REVOKE”、“REASSIGN”、“SET”、“RESET”和“ALTER SESSION”语句。sysadmin和monitor admin用户可以查看所有用户的统计信息,普通用户可以查看本用户的统计信息。

    返回值类型:record

  • pgxc_get_sql_count()

    描述:提供整个集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果和DDL/DML/DCL语句的计数结果,DDL语句包括“TRUNCATE”、“CLUSTER”、“VACUUM”、“ANALYZE”、“CREATE”(不包括“CREATE ROLE”和“CREATE USER”)、“DROP”(不包括“DROP ROLE”和“DROP USER”)、“ALTER”(不包括“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”和“ALTER SESSION”)、“REINDEX”、“COMMENT”、“BARRIER”、“SECURITY LABEL ON”、“PURGE”、“TIMECAPSULE”、“REFRESH”、“IMPDP”和“EXPDP”语句。DML语句包括“SELECT”、“UPDATE”、“INSERT”、“DELETE”、“MERGE”、“PREPARE”、“EXPLAIN”、“LOCK”、“COPY”、“ANONYMOUS”、“DELTA”、“EXECUTE”、“MOVE”、“FETCH”、“CLOSE”、“DEALLOCATE”、“DECLARE”、“CURSOR”和“LOAD”语句。DCL语句包括“SHOW”、“CREATE ROLE”、“CREATE USER”、“DROP ROLE”、“DROP USER”、“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”、“GRANT”、“REVOKE”、“REASSIGN”、“SET”、“RESET”和“ALTER SESSION”语句。

    返回值类型:record

  • pgxc_get_node_env()

    描述:提供获取集群中所有节点的环境变量信息。

    返回值类型:record

  • pgxc_disaster_read_set(text)

    描述:设置灾备集群的节点信息到ETCD上。仅灾备集群可用,仅初始用户可调用。

    返回值类型:Boolean

  • pgxc_disaster_read_init()

    描述:初始化灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。

    返回值类型:Boolean

  • pgxc_disaster_read_clear()

    描述:清理灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。

    返回值类型:Boolean

  • pgxc_disaster_read_status()

    描述:提供灾备集群的节点信息,仅灾备集群可用。

    返回值类型:record

  • disaster_read_set_cn_status()

    描述:更新灾备读中CN活跃状态信息。仅灾备集群可用。

    返回值类型:Boolean

    示例:

    gaussdb=# SELECT g_catalog.disaster_read_set_cn_status('440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
    disaster_read_set_cn_status 
    -----------------------------
     t
    (1 row)
  • disaster_read_del_cn_status()

    描述:清理灾备读中CN活跃状态信息。仅灾备集群可用。

    返回值类型:Boolean

    示例:

    gaussdb=# SELECT pg_catalog.disaster_read_del_cn_status();
    disaster_read_del_cn_status 
    -----------------------------
     t
    (1 row)
  • gs_switch_relfilenode()

    描述:交换两个表或分区的元信息(重分布工具内部使用,用户直接使用会有错误信息提示)。

    返回值类型:int

    此函数可能导致清空统计信息,建议在调用后重新收集统计信息。

  • pg_catalog.plancache_clean()

    描述:清理当前节点上无人使用的全局计划缓存。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。

    返回值类型:boolean

  • DBE_PERF.global_plancache_clean()

    描述:清理所有节点上无人使用的全局计划缓存。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。

    返回值类型:Boolean

  • pg_catalog.global_plancache_set_invalid(hashkey, unique_sql_id)

    描述:支持通过bigint类型的入参hashkey和unique_sql_id手动失效本节点的GPC缓存计划。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。

    返回值类型:text

    示例:

    -- 从dbe_perf.global_plancache_status视图中获取hash_value作为第一个入参,unique_sql_id作为第二个入参。
    gaussdb=# SELECT * FROM pg_catalog.global_plancache_set_invalid(3928396421,3641111755);
     global_plancache_set_invalid 
    ------------------------------
     Execution succeeded.
    (1 row)
    • 不建议用户使用此函数,会导致硬解析次数变多,影响性能。
    • 函数不支持使unique_sql_id为0的计划失效。
  • pg_catalog.global_plancache_show_plan(hashkey, unique_sql_id)

    描述:通过bigint类型的入参hashkey和unique_sql_id,查看对应的GPC缓存计划。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。此函数不支持explain_perf_mode pretty模式。

    返回值类型:text

    示例:

    -- 从dbe_perf.global_plancache_status视图中获取hash_value作为第一个入参,unique_sql_id作为第二个入参。
    gaussdb=# SELECT * FROM pg_catalog.global_plancache_show_plan(3928396421,3641111755);
            global_plancache_show_plan        
    ------------------------------------------
     Result  (cost=0.00..0.01 rows=1 width=0)+
    
    (1 row)

    函数不支持显示unique_sql_id为0的计划。

  • copy_error_log_create()

    描述:由于COPY FROM容错机制所需要的错误表已变更为在初始化阶段创建的系统表,因此当前函数改为始终返回true,仅做兼容。

    返回值类型:Boolean

    表2 错误表pg_catalog.pgxc_copy_error_log信息

    列名称

    类型

    描述

    relname

    character varying

    表名称。以模式名.表名形式显示。

    begintime

    timestamp with time zone

    出现数据格式错误的时间。

    filename

    character varying

    出现数据格式错误的数据源文件名。

    lineno

    bigint

    在数据源文件中,出现数据格式错误的行号。

    rawrecord

    text

    在数据源文件中,出现数据格式错误的原始记录。

    detail

    text

    详细错误信息。

    custom_id

    text

    关联的copy_custom_id输入的值,表示本次导入的自定义标识信息。

  • pgxc_copy_error_func(boolean need_union, boolean only_dn)

    描述:查询各节点上pg_catalog.gs_copy_error_log表中的内容并返回。返回值record中各字段的名称及数据类型与pg_catalog.gs_copy_error_log表中各字段名称及数据类型对应。

    返回值类型:set of record

    表3 pgxc_copy_error_func参数说明

    参数

    类型

    描述

    need_union

    boolean

    • true表示同时查询pg_catalog.gs_copy_error_log表和pg_catalog.gs_copy_error_old表中的数据并做union_all操作;
    • false表示仅查询pg_catalog.gs_copy_error_log表中的数据。

    only_dn

    boolean

    • true表示只查询所有DN节点上的数据;
    • false表示查询所有节点上的数据。
  • gs_copy_error_insert(cstring relname, cstring begintime, cstring filename, bigint lineno, cstring rawrecord, cstring detail, cstring custom_id)

    描述:向DN节点的pg_catalog.gs_copy_error_log表中插入数据。该函数仅供COPY内部调用,禁止用户主动调用。

    返回值类型:boolean

    表4 gs_copy_error_insert参数说明

    参数

    类型

    描述

    relname

    cstring

    表名称。以模式名.表名形式显示。

    begintime

    cstring

    出现数据格式错误的时间。

    filename

    cstring

    出现数据格式错误的数据源文件名。

    lineno

    bigint

    在数据源文件中,出现数据格式错误的行号。

    rawrecord

    cstring

    在数据源文件中,出现数据格式错误的原始记录。

    detail

    cstring

    详细错误信息。

    custom_id

    cstring

    关联的copy_custom_id输入的值,表示本次导入的自定义标识信息。

  • gs_copy_summary_func(boolean need_union)

    描述:查询当前节点上pg_catalog.gs_copy_summary_log表中的内容并返回。目前不支持此函数。

    返回值类型:set of record

    表5 gs_copy_summary_func参数说明

    参数

    类型

    描述

    need_union

    boolean

    • true表示同时查询pg_catalog.gs_copy_summary_log表和pg_catalog.gs_copy_summary_old表中的数据并做union_all操作;
    • false表示仅查询pg_catalog.gs_copy_summary_log表中的数据。
  • pg_stat_get_data_senders()

    描述:提供当前活跃的数据复制发送线程的详细信息。

    返回值类型:record

  • textlen()

    描述:提供查询text的逻辑长度的方法。

    返回值类型:int

  • threadpool_status()

    描述:显示线程池中工作线程及会话的状态信息。

    返回值类型:record

  • get_local_active_session()

    描述:提供当前节点保存在内存中的历史活跃session状态的采样记录,sysadmin和monitor admin权限能查看当前节点所有的历史活跃session记录,普通用户查看本会话的历史活跃session记录。

    返回值类型:record

  • dbe_perf.get_global_gs_asp(timestamp,timestamp)

    描述:提供所有节点保存在系统表gs_asp中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。

    返回值类型:record

  • get_wait_event_info()

    描述:提供wait event事件的具体信息。

    返回值类型:record

  • dbe_perf.get_datanode_active_session(text)

    描述:提供从CN查询主DN上保存在内存中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。

    返回值类型:record

    备注:该函数查询目标DN上DBE_PERF.LOCAL_ACTIVE_SESSION视图(请参见DBE_PERF.LOCAL_ACTIVE_SESSION)中的记录并和所有CN上的DBE_PERF.LOCAL_ACTIVE_SESSION视图中的记录进行匹配获取query string,所以会占用大量的内存。

  • dbe_perf.get_datanode_active_session_hist(text,timestamp,timestamp)

    描述:提供从CN查询主DN上保存在系统表gs_asp中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。

    返回值类型:record

    备注:该函数查询目标DN上指定时间段的gs_asp记录,如果指定时间段过长造成查询的记录过多,会耗费大量时间。

  • generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)

    描述:基于两个snapshot生成系统诊断报告,默认初始化用户或监控管理员用户可以访问。只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:text

    表6 generate_wdr_report参数说明

    参数

    说明

    取值范围

    begin_snap_id

    生成某段时间内性能诊断报告的开始snapshotid。

    1~9,223,372,036,854,775,807

    end_snap_id

    结束snapshot的id,默认end_snap_id大于begin_snap_id。

    1~9,223,372,036,854,775,807

    report_type

    指定生成report的类型。

    • summary
    • detail
    • all,即同时包含summary和detail。

    report_scope

    指定生成report的范围。

    • cluster:数据库级别的信息。
    • node:节点级别的信息。

    node_name

    • 在report_scope指定为node时,需要把该参数指定为对应节点的名称,节点名称可以通过执行“SELECT * FROM pg_node_env;”查询。
    • 在report_scope指定为cluster时,该值可以省略,或者指定为空或NULL。
    • cluster:省略/空/NULL。
    • node:GaussDB中的节点名称。
  • generate_wdr_db_report(db_name cstring, begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)

    描述:基于两个snapshot生成库级系统诊断报告。需要在系统库下执行,默认初始化用户或monadmin用户可以访问。用户只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:record

    表7 generate_wdr_db_report 参数说明

    参数

    说明

    取值范围

    db_name

    指定database名称。

    -

    begin_snap_id

    生成某段时间内性能诊断报告的开始snapshotid。

    1~9,223,372,036,854,775,807

    end_snap_id

    结束snapshot的id,默认end_snap_id大于begin_snap_id。

    1~9,223,372,036,854,775,807

    report_type

    指定生成report的类型。

    • summary
    • detail
    • all,即同时包含summary和detail。

    report_scope

    指定生成report的范围。

    • cluster:数据库级别的信息。
    • node:节点级别的信息。

    node_name

    • 在report_scope指定为node时,需要把该参数指定为对应节点的名称,节点名称可以通过执行“SELECT * FROM pg_node_env;”查询。
    • 在report_scope指定为cluster时,该值可以省略,或者指定为空或NULL。
    • cluster:省略/空/NULL。
    • node:GaussDB中的节点名称。
  • create_wdr_snapshot()

    描述:手工生成系统诊断快照,该函数需要sysadmin权限,且只能在CCN上执行。

    返回值类型:text

  • kill_snapshot()

    描述:kill后台的WDR snapshot线程,调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。

    返回值类型:void

  • dbe_perf.generate_asp_report(start_time timestamp with time zone, end_time timestamp with time zone, datanode text, slot_count bigint)

    描述:基于时间戳和节点信息生成ASP诊断报告,monadmin用户可以访问。slot_count为指标展示时分割的时间段的个数。datanode可以指定某个分区DN(如:dn_6001_6002_6003),或者是某个DN节点(dn_6001、dn_6002、dn_6003)。该函数只能在CN上使用。

    返回值类型:text

  • generate_asp_report(start_time timestamp with time zone, end_time timestamp with time zone, slot_count bigint, node_name text)

    描述:基于时间戳生成ASP诊断报告,monadmin用户可以访问。slot_count为指标展示时分割的时间段的个数。node_name用于生成指定节点的ASP报告,取值只能是当前CN的名称,可缺省。缺省时,生成当前节点的报告。该函数只能在CN上使用。

    返回值类型:text

  • dbe_perf.get_active_session_profile(start_ts timestamp with time zone, end_ts timestamp with time zone, need_final boolean,node_name text)

    描述:基于时间戳查询asp内存中与磁盘中的数据。need_final是否查询阻塞信息,默认值为false。node_name用于区分CN、主备DN,如(cn_5001、dn_6001或dn_6002),不可缺省。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。

    返回值类型:record

  • capture_view_to_json(text,integer)

    描述:将视图的结果存入GUC: perf_directory所指定的目录,如果is_crossdb为1,则表示对于所有的database都会访问一次view;如果is_crossdb为0,则表示仅对当前database进行一次视图访问。该函数只有sysadmin和monitor admin用户可以执行。

    返回值类型:int

  • reset_unique_sql(text,text,bigint)

    描述:用来清理CN/DN内存中的Unique SQL(需要sysadmin/monitor admin权限)。

    返回值类型:Boolean

    表8 reset_unique_sql参数说明

    参数

    类型

    描述

    scope

    text

    清理范围类型:

    • 'GLOBAL' :清理所有的CN/DN节点,如果是'GLOBAL',则只可以为CN节点执行此函数。
    • 'LOCAL' :清理本节点。

    clean_type

    text

    • 'BY_USERID':按用户ID来进行清理Unique SQL。
    • 'BY_CNID' :按CN的ID来进行清理Unique SQL。
    • 'ALL' :全部清理。

    clean_value

    int8

    clean_type对应的清理值。

    • 如果clean_type为'BY_USERID',则清理用户ID为clean_value的记录。
    • 如果clean_type为'BY_CNID',则清理CN的ID为clean_value的记录。
    • 如果第二个参数为ALL,则第三个参数无效,可为任意值。
  • wdr_xdb_query(db_name_str text, query text)

    描述:提供本地跨数据库执行query的能力。例如: 在连接到testdb库时,访问test库下的表。只有初始化用户才有权限执行。

    SELECT col1 from wdr_xdb_query('dbname=test','select col1 from t1') as dd(col1 int);

    返回值类型:record

  • pg_wlm_jump_queue(pid int)

    描述:调整任务到CN队列的最前端。

    返回值类型:boolean

    • true:成功。
    • false:失败。
  • gs_wlm_switch_cgroup(pid int, cgroup text)

    描述:调整作业的优先级到新控制组。

    返回值类型:boolean

    • true:成功。
    • false:失败。
  • pv_session_memctx_detail(threadid tid, MemoryContextName text)

    描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/gs_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过查询PV_SESSION_MEMORY_DETAIL视图(请参见PV_SESSION_MEMORY_DETAIL)中的sessid字段获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即'')的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。

    返回值类型:boolean

    • true:成功。
    • false:失败。
  • pg_shared_memctx_detail(MemoryContextName text)

    描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/gs_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。

    返回值类型:boolean

    • true:成功。
    • false:失败。
  • local_aio_completer_stat()

    描述:显示本实例中AIO Completer线程的相关统计信息。

    返回值类型:record

    表9 local_aio_completer_stat返回值说明

    参数

    类型

    描述

    node_name

    text

    当前实例名称。

    tid

    int8

    AIO Completer线程id。

    thread_type

    text

    AIO Completer线程类型(读/写)。

    aio_submitted_num

    int8

    AIO Completer线程已提交的异步I/O请求数量。

    aio_completed_num

    int8

    AIO Completer线程已完成的异步I/O请求数量。

    aio_incompleted_num

    int8

    AIO Completer线程未完成的异步I/O请求数量。

    slot_count_left

    int8

    空闲slot数量。

  • local_aio_slot_usage_status()

    描述:显示本实例中异步I/O提交槽位的相关统计信息。

    返回值类型:record

    表10 local_aio_slot_usage_status返回值说明

    参数

    类型

    描述

    node_name

    text

    当前实例名称。

    slot_id

    int4

    槽位id。

    slot_type

    char

    槽位类型(r:读,w:写)。

    status

    bool

    槽位占用状态。

    buffer_id

    int8

    该槽位对应的buffer id。

    relfilenode_blocknum

    text

    该槽位对应的buffer所在的物理页面位置。

    lsn

    int8

    页面对应的LSN。

    submitted_time

    int8

    页面异步提交时的时间。

    elapsed_time

    int8

    页面已经等待的时间。

  • remote_aio_completer_stat()

    描述:显示其他实例中AIO Completer线程的相关统计信息(仅在CN上使用)。

    返回值类型:record

    表11 remote_aio_completer_stat返回值说明

    参数

    类型

    描述

    node_name

    text

    其他实例名称。

    tid

    int8

    AIO Completer线程id。

    thread_type

    text

    AIO Completer线程类型(读/写)。

    aio_submitted_num

    int8

    AIO Completer线程已提交的异步I/O请求数量。

    aio_completed_num

    int8

    AIO Completer线程已完成的异步I/O请求数量。

    aio_incompleted_num

    int8

    AIO Completer线程未完成的异步I/O请求数量。

    slot_count_left

    int8

    空闲slot数量。

  • remote_aio_slot_usage_status()

    描述:显示其他实例中异步I/O提交槽位的相关统计信息。

    返回值类型:record

    表12 remote_aio_slot_usage_status返回值说明

    参数

    类型

    描述

    node_name

    text

    其他实例名称。

    slot_id

    int4

    槽位id。

    slot_type

    char

    槽位类型(r:读,w:写)。

    status

    bool

    槽位占用状态。

    buffer_id

    int8

    该槽位对应的buffer id。

    relfilenode_blocknum

    text

    该槽位对应的buffer所在的物理页面位置。

    lsn

    int8

    页面对应的LSN。

    submitted_time

    int8

    页面异步提交时的时间。

    elapsed_time

    int8

    页面已经等待的时间。

  • gs_get_io_type()

    描述:显示本实例的I/O模式。

    返回值类型:text

    • BIO:表示当前实例正以BIO模式运行(即ADIO未打开)。
    • DIO:表示当前实例正以DIO模式运行(即ADIO已打开)。
    • BIO->DIO (In progress):表示当前实例正在从BIO到DIO模式的切换过程中。
  • local_bgwriter_stat()

    描述:显示本实例的bgwriter线程刷页信息。

    返回值类型:record

    表13 local_bgwriter_stat返回值说明

    参数

    类型

    描述

    node_name

    text

    当前实例名称。

    bgwr_actual_flush_total_num

    int8

    自从上次重启到现在,bgwriter线程刷脏总数(单位:页)。

    bgwr_last_flush_num

    int4

    自从上一轮刷脏到现在,bgwriter线程刷脏数量(单位:页)。

    candidate_slots

    int4

    候选者队列中可用于缓存页面申请的数量。

    get_buffer_from_list

    int8

    自从上次重启到现在,从候选者队列中获取缓存页面的数量(单位:页)。

    get_buf_clock_sweep

    int8

    自从上次重启到现在,从clock sweep机制中获取缓存页面的数量(单位:页)。

  • local_candidate_stat()

    描述:显示本实例的候选buffer链中页面个数,buffer淘汰信息,包含normal buffer pool和segment buffer pool。

    返回值类型:record

  • gs_buffer_manager_info()

    描述:打印当前数据库从上一次调用该函数(如未执行过则为启动时)到现在的缓冲区的页面访问数和未命中数量,以及读取率(即1-命中率),以及智能淘汰算法给出淘汰队列的每个轮次的休眠时间。

    Total access: %lu, Total read: %lu, Read rate: %0.3f, Sleep time :%u

    返回值类型:text

  • local_ckpt_stat()

    描述:显示本实例的检查点信息和各类日志刷页情况。

    返回值类型:record

  • local_double_write_stat()

    描述:显示本实例的双写文件的情况。

    返回值类型:record
    表14 local_double_write_stat参数说明

    参数

    类型

    描述

    node_name

    text

    实例名称。

    curr_dwn

    int8

    当前双写文件的序列号。

    curr_start_page

    int8

    当前双写文件恢复起始页面。

    file_trunc_num

    int8

    当前双写文件复用的次数。

    file_reset_num

    int8

    当前双写文件写满后发生重置的次数。

    total_writes

    int8

    当前双写文件总的I/O次数。

    low_threshold_writes

    int8

    低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。

    high_threshold_writes

    int8

    高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。

    total_pages

    int8

    当前刷页到双写文件区的总的页面个数。

    low_threshold_pages

    int8

    低效率刷页的页面个数。

    high_threshold_pages

    int8

    高效率刷页的页面个数。

    file_id

    int8

    当前双写文件的id号。

  • local_pagewriter_running_stat()

    描述:显示本实例批量刷脏线程的线程运行状态情况。

    返回值类型:record

    表15 local_pagewriter_running_stat()参数说明

    参数类型

    参数

    类型

    描述

    输出参数

    nodename

    text

    实例名称。

    输出参数

    tid

    int8

    pagewriter线程id。

    输出参数

    type

    text

    线程类型。

    输出参数

    extre_start_loc

    int8

    极致刷脏推进的位置。

    输出参数

    extre_left_size

    int4

    极致刷脏上一轮跳过待刷的脏页数量。

    输出参数

    full_ckpt

    bool

    是否处于全量刷脏模式。

    输出参数

    shutdown_progress

    bool

    退出状态。

    输出参数

    buf_id_start

    int4

    扫描线程范围起始buf_id。

    输出参数

    buf_id_end

    int4

    扫描线程结束buf_id。

    输出参数

    standby_buf_start_id

    int4

    备机读扫描线程起始buf_id。

    输出参数

    standby_buf_end_id

    int4

    备机读扫描线程结束buf_id。

    输出参数

    exception_count

    int4

    线程历史累计异常数量。

    输出参数

    recent_exception_time

    timestamptz

    最近一次异常的时间戳。

  • local_pagewriter_accumulate_stat()

    描述:显示本实例在输入时间范围内的批量刷脏线程的带宽和锁冲突统计情况。

    返回值类型:record

    表16 local_pagewriter_accumulate_stat()参数说明

    参数类型

    参数

    类型

    描述

    输入参数

    last_time

    int8

    统计的时间长度(秒)。

    输出参数

    nodename

    text

    实例名称。

    输出参数

    tid

    int8

    pagewriter线程id。

    输出参数

    type

    text

    线程类型。

    输出参数

    bandwidth

    float8

    平均带宽(MB/s)。

    输出参数

    lock_conflict_count

    int8

    因为内容锁冲突跳过的页面数量。

    输出参数

    avg_pagewriter_sleep

    float8

    真实的平均刷脏周期。

  • local_dirty_queue_advance_stat()

    描述:显示本实例脏页队列的推进情况。

    返回值类型:record

    表17 local_dirty_queue_advance_stat()参数说明

    参数类型

    参数

    类型

    描述

    输出参数

    nodename

    text

    实例名称。

    输出参数

    dirty_queue_head

    int8

    脏页队列头的位置。

    输出参数

    dirty_queue_tail

    int8

    脏页队列尾的位置。

    输出参数

    dirty_queue_size

    int8

    脏页队列大小。

    输出参数

    dirty_queue_full

    bool

    脏页队列是否满。

    输出参数

    head_buffer

    int4

    脏页队列头的buffer值。

    输出参数

    head_buffer_lsn

    text

    脏页队列头的页面lsn。

    输出参数

    head_buffer_content_lock_id

    int8

    脏页队列头buffer的内容锁的lock_unique_id。

    输出参数

    head_buffer_io_lock_id

    int8

    脏页队列头buffer的I/O锁的lock_unique_id。

    输出参数

    extre_scan_current

    int8

    极致刷脏已经分配给刷脏线程的脏页队列的结束位置。

  • local_single_flush_dw_stat()

    描述:显示本实例的单页面淘汰双写文件的情况。

    返回值类型:record

  • local_pagewriter_stat()

    描述:显示本实例的刷页信息和检查点信息。

    返回值类型:record

    表18 local_pagewriter_stat()参数说明

    参数类型

    参数

    类型

    描述

    输出参数

    node_name

    text

    实例名称。

    输出参数

    pgwr_actual_flush_total_num

    int8

    从启动到当前时间刷脏页的总计数量。

    输出参数

    pgwr_last_flush_num

    int4

    上一批刷脏页数量。

    输出参数

    remain_dirty_page_num

    int8

    当前预计剩余的脏页数量。

    输出参数

    queue_head_page_rec_lsn

    text

    当前实例的脏页队列第一个脏页的recovery_lsn。

    输出参数

    queue_rec_lsn

    text

    当前实例的脏页队列的recovery_lsn。

    输出参数

    current_xlog_insert_lsn

    text

    当前实例Xlog写入的位置,备机查询时该值无效。

    输出参数

    ckpt_redo_point

    text

    当前实例的检查点。

  • local_redo_stat()

    描述:显示本实例的备机的当前回放状态。

    返回值类型:record

    备注:返回的回放状态主要包括当前回放位置,回放最小恢复点位置等信息。

  • local_recovery_status()

    描述:显示本实例的主机和备机的日志流控信息。

    返回值类型:record

  • local_rto_status()

    描述:显示本实例的主机和备机的日志流控信息。

    返回值类型:record

  • gs_wlm_switch_cgroup(sess_id int8, cgroup name)

    描述:切换指定会话的控制组。

    返回值类型:record

  • comm_client_info()

    描述:用于查询单个节点活跃的客户端连接信息,返回结果解释见COMM_CLIENT_INFO。

    返回值类型:setof record

  • pg_get_flush_lsn()

    描述:返回当前节点flush的Xlog位置。

    返回值类型:text

  • pg_get_sync_flush_lsn()

    描述:返回当前节点多数派flush的Xlog位置。

    返回值类型:text

  • pgxc_wlm_rebuild_user_resource_pool()

    描述:重新构建用户及资源池缓存信息。需要系统管理员权限才可以执行该函数。

    返回值类型:boolean

  • locktag_decode(locktag text)

    描述:从locktag中解析锁的具体信息。

    示例:

    gaussdb=# SELECT locktag_decode('271b:0:0:0:0:6');
                   locktag_decode
    ---------------------------------------------
     locktype:transactionid, transactionid:10011
    (1 row)

    返回值类型:text

  • disable_conn(disconn_mode text, host text, port integer)

    描述:CM Agent处理CM Server下发的命令,在DN进行选主时设置该DN拒绝连接所有DN、强制连接某个DN或轮询连接所有DN。只有初始化用户和系统管理员才可以调用该函数。

    返回值类型:void

    表19 disable_conn参数说明

    参数

    类型

    描述

    disconn_mode

    text

    DN连接模式:

    • 'prohibit_connection' - 拒绝连接所有DN。
    • 'specify_connection' - 强制连接某个DN。
    • 'polling_connection' - 轮询连接所有DN。

    host

    text

    DN的IP。

    port

    integer

    DN的端口号。

  • dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)

    描述:获取集群级的全量SQL(Full SQL)信息。只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:record

    表20 dbe_perf.get_global_full_sql_by_timestamp参数说明

    参数

    类型

    描述

    start_timestamp

    timestamp with time zone

    SQL启动时间范围的开始时间点。

    end_timestamp

    timestamp with time zone

    SQL启动时间范围的结束时间点。若start_timestamp>=end_timestamp,则函数执行报错。

  • dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)

    描述:获取集群级的慢SQL(Slow SQL)信息。只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:record

    表21 dbe_perf.get_global_slow_sql_by_timestamp参数说明

    参数

    类型

    描述

    start_timestamp

    timestamp with time zone

    SQL启动时间范围的开始时间点。

    end_timestamp

    timestamp with time zone

    SQL启动时间范围的结束时间点。若start_timestamp>=end_timestamp,则函数执行报错。

  • statement_detail_decode(detail text, format text, pretty boolean)

    描述:解析全量/慢SQL语句中的details字段的信息。只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:text

    表22 statement_detail_decode参数说明

    参数

    类型

    描述

    detail

    text

    SQL语句产生的事件的集合(不可读)。

    format

    text

    解析输出格式,取值为plaintext。

    pretty

    boolean

    当format为plaintext时,是否以优雅的格式展示:

    • true表示通过“\n”分隔事件。
    • false表示通过“,”分隔事件。
  • pgxc_get_csn(tid)

    描述:返回普通表的事务id对应的事务提交序号(CSN)。

    返回值类型:int8

  • pgxc_get_csn(tid,bucketid)

    描述:返回给定bucketid的事务id对应的事务提交序号(CSN),入参bucketid指hashbucket表的物理bucketid,普通表为-1。

    返回值类型:int8

  • get_global_user_transaction()

    描述:返回所有节点上各用户的事务相关信息。

    返回值类型:node_name name、usename name、commit_counter bigint、rollback_counter bigint、resp_min bigint、resp_max bigint、resp_avg bigint、resp_total bigint、bg_commit_counter bigint、bg_rollback_counter bigint、bg_resp_min bigint、bg_resp_max bigint、bg_resp_avg bigint、bg_resp_total bigint、dbid oid

  • pg_collation_for()

    描述:返回入参字符串对应的排序规则。

    参数:any(如果是常量必须进行显式类型转换)

    返回值类型:text

  • pgxc_unlock_for_sp_database(databasename text)

    描述:释放指定数据库锁。

    参数:databasename为数据库名称。

    返回值类型:Boolean

    备注:调用该函数的用户需要具有SYSADMIN权限。

  • pgxc_lock_for_sp_database(databasename text)

    描述:对指定的数据库加锁。

    参数:databasename为数据库名称。

    返回值类型:Boolean

    备注:调用该函数的用户需要具有SYSADMIN权限。

  • pgxc_unlock_for_transfer(schemaname text)

    描述:释放用于数据传输(数据重分布)锁。

    参数:schemaname为模式名称。

    返回值类型:Boolean

    备注:调用该函数的用户需要具有SYSADMIN权限。

  • pgxc_lock_for_transfer(schemaname text)

    描述:对数据库加锁,用于数据传输(数据重分布)。

    参数:schemaname为模式名称。

    返回值类型:Boolean

    备注:调用该函数的用户需要具有SYSADMIN权限。

  • gs_comm_proxy_thread_status()

    描述:用于在集群配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计。该函数在当前版本不支持。

    参数:nan

    返回值类型:record

  • gs_catalog_attribute_records()

    描述:对于指定的系统表oid,返回该系统表对应的各个字段的定义。仅支持oid小于10000的普通系统表(不支持索引、toast表等)。

    参数:系统表oid。

    返回值类型:record

  • dynamic_func_control(scope text, function_name text, action text, "{params}" text[])

    描述:动态开启内置的功能,当前仅支持动态开启全量SQL。

    返回值类型:record

    表23 dynamic_func_control参数说明

    参数

    类型

    描述

    scope

    text

    动态开启功能的范围,当前仅支持'GLOBAL'和'LOCAL'。

    function_name

    text

    功能的名称,当前仅支持'STMT'和'GSTRACE'。

    action

    text

    当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN(所有用户均可以使用LIST选项,其他选项必须具有系统管理员或MONADMIN权限才能使用):
    • TRACK - 开始记录归一化SQL的全量SQL信息。
    • UNTRACK - 取消记录归一化SQL的全量SQL信息。
    • LIST - 列取当前TRACK的归一化SQL的信息。
    • CLEAN - 清理记录当前归一化SQL的信息。

    当function_name为'GSTRACE'时,action仅支持TRACE_SQL/TRACE_FUNC/UNTRACE_SQL/UNTRACE_FUNC/UNTRACE_ALL_SQL/UNTRACE_ALL_FUNC/LIST_TRACE_SQL/LIST_TRACE_FUNC/SHOW_TRACED_FUNC/SHOW_MANGLED_FUNC/SHOW_SUBFUNC:

    • TRACE_SQL - GSTrace注册指定跟踪的SQL语句。
    • TRACE_FUNC - GSTrace注册指定跟踪的函数。
    • UNTRACE_SQL - GSTrace取消注册指定跟踪的SQL语句。
    • UNTRACE_FUNC - GSTrace取消注册指定跟踪的函数。
    • UNTRACE_ALL_SQL - GSTrace取消全部SQL语句。
    • UNTRACE_ALL_FUNC - GSTrace取消全部函数。
    • LIST_TRACE_SQL - GSTrace查看配置的跟踪SQL语句。
    • LIST_TRACE_FUNC - GSTrace查看配置的跟踪函数。
    • SHOW_TRACED_FUNC - GSTrace查看正在跟踪的函数的状态。
    • SHOW_MANGLED_FUNC - GSTrace查看指定函数mangle后的名称。
    • SHOW_SUBFUNC - GSTrace指定函数的全部子函数。

    params

    text[]

    当function_name为'STMT'时,对应不同action的params设置如下:
    • TRACK - '{"归一化SQLID", "L0/L1/L2"}'
    • UNTRACK - '{"归一化SQLID"}'
    • LIST - '{}'
    • CLEAN - '{}'
    当function_name为'GSTRACE'时,对应不同action的params设置如下:
    • TRACE_SQL - 请参见gstrace_reg_sql()函数入参说明。
    • TRACE_FUNC - 请参见gstrace_reg_func()函数入参说明。
    • UNTRACE_SQL - 请参见gstrace_unreg_sql()函数入参说明。
    • UNTRACE_FUNC - 请参见gstrace_unreg_func()函数入参说明。
    • UNTRACE_ALL_SQL - 请参见gstrace_unreg_all_sql()函数入参说明。
    • UNTRACE_ALL_FUNC - 请参见gstrace_unreg_all_func()函数入参说明。
    • LIST_TRACE_SQL - 请参见gstrace_list_configured_sql()函数入参说明。
    • LIST_TRACE_FUNC - 请参见gstrace_list_configured_func()函数入参说明。
    • SHOW_TRACED_FUNC - 请参见gstrace_show_traced_func()函数入参说明。
    • SHOW_MANGLED_FUNC - 请参见gstrace_show_mangled_func()函数入参说明。
    • SHOW_SUBFUNC - 请参见gstrace_show_subfunc()函数入参说明。
  • gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean)

    描述:用于解析指定表页面,并返回存放解析内容的路径。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。对于未落盘的页面,由于磁盘上实际为空页,解析结果自然为空,且relation_type参数不生效。

    表24 gs_parse_page_bypath参数说明

    参数

    类型

    描述

    path

    text

    • 对于普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394。
    • 对于普通表的visibility map,相对路径为:tablespace name/database oid/表的vm文件。例如:base/16603/16394_vm。
    • 对于clog文件,相对路径为:pg_clog目录下的clog文件。例如:000000000000。
    • 对于csnlog文件,相对路径为:pg_csnlog目录下的csnlog文件。例如:000000000000。
    • 对于undo record文件,相对路径为:undo目录下的undo/UNDOPERSISTENCE/zoneid.segno。例如:undo/permanent/00000.0000009。
    • 对于undo meta文件,相对路径为:undo目录下的undo/UNDOPERSISTENCE/zoneid.meta.segno。例如:undo/permanent/00000.meta.0000004。
    • 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。
    • 合法的path格式列举:
      • global/relNode。
      • base/dbNode/relNode。
      • pg_tblspc/spcNode/version_dir/dbNode/relNode。

    blocknum

    bigint

    • -1:所有block的信息(强制从磁盘解析)。
    • 0~MaxBlockNumber:对应block的信息。
    • 对于BTree/UBTree索引,block 0为索引元页面。
    • 对于undo record文件,采用逻辑块号,对应文件block大于等于segno*128,小于(segno+1)*128。
    • 对于undo meta文件,采用逻辑块号,对应文件block大于等于segno*4,小于(segno+1)*4。

    relation_type

    text

    • heap(astore表)。
    • uheap(ustore表)。
    • btree(BTree索引)。
    • ubtree(UBTree索引)。
    • vm(astore普通表的visibility map)。
    • fsm(行存表的freespace map文件)。
    • clog(事务状态日志commit log)。
    • csnlog(快照时间戳日志commit sequence number log)。
    • undo_slot(事务槽信息)。
    • undo_record(undo 记录信息)。
    • indexurq(indexurq页面)。
    • ugin_index (ugin索引)
    • gin_index (gin索引)
    • gist_index (gist索引)
    • cmap (跨页透明压缩元信息)
    • pg_dw_turbo_compress (跨页透明压缩双写区)

    read_memory

    boolean

    • false,从磁盘文件解析。
    • true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。

    正常使用示例:

    # 解析BTree索引文件中所有页面的信息内容
    # 函数调用前请依据参数说明中的内容确保文件路径真实存在
    gaussdb=# SELECT gs_parse_page_bypath('base/16603/16394', -1, 'btree', false);
                            gs_parse_page_bypath                        
    --------------------------------------------------------------------
     gs_log_dir/dump/1663_16603_16394_-1.page
    (1 row)
    
    # 解析vm文件中所有block的可见性结果
    gaussdb=# SELECT gs_parse_page_bypath('base/12828/16771_vm', -1, 'vm', false);
                             gs_parse_page_bypath                          
    -----------------------------------------------------------------------
     gs_log_dir/dump/1663_12828_16771_-1_vm.page
    (1 row)
    
    # 解析clog文件中0号block的commit log日志
    gaussdb=# SELECT gs_parse_page_bypath('000000000000', 0, 'clog', false); 
                            gs_parse_page_bypath                        
    --------------------------------------------------------------------
     gs_log_dir/dump/000000000000.clog
    (1 row)

    异常场景报错示例:

    # 入参blocknum超出取值范围时报错
    gaussdb=# SELECT gs_parse_page_bypath('base/12828/16777', -10, 'heap', false);
    ERROR:  Blocknum should be between -1 and 4294967294.
    CONTEXT:  referenced column: gs_parse_page_bypath
  • gs_xlogdump_lsn(start_lsn text, end_lsn text)

    描述:用于解析指定lsn范围之内的Xlog日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前Xlog位置。

    参数:start_lsn为LSN起始位置, end_lsn为LSN结束位置。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。

  • gs_xlogdump_xid(c_xid xid)

    描述:用于解析指定xid的Xlog日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。

    参数:c_xid为事务ID。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。

  • gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text)

    描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。

    表25 gs_xlogdump_tablepath参数说明

    参数

    类型

    描述

    path

    text

    • 对于普通表或段页式的普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。
    • 对于段页式的hashbucket表,相对路径为:tablespace name/database oid/Segment Head的逻辑页号_b(bucketid)。例如:base/16603/16394_b1437。
    • 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。
    • 合法的path格式列举:
      • global/relNode
      • base/dbNode/relNode
      • pg_tblspc/spcNode/version_dir/dbNode/relNode

        对于hashbucket表,在此格式基础上,路径末尾加上_b段页式的逻辑页号。

    blocknum

    bigint

    • -1:所有block的信息(强制从磁盘解析)。
    • 0~MaxBlockNumber:对应block的信息。

    relation_type

    text

    • heap(astore 表)
    • btree(BTree 索引)
    • segment(段页式)
  • gs_xlogdump_parsepage_tablepath(path text, blocknum bigint, relation_type text, read_memory boolean)

    描述:用于解析指定表页面和表页面对应的日志,并返回存放解析内容的路径。可以看做一次执行gs_parse_page_bypath和gs_xlogdump_tablepath。该函数执行的前置条件是表文件存在。如果想查看已删除的表的相关日志,请直接调用gs_xlogdump_tablepath。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。

    表26 gs_xlogdump_parsepage_tablepath参数说明

    参数

    类型

    描述

    path

    text

    • 对于普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394。
    • 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。
    • 合法的path格式列举:
      • global/relNode。
      • base/dbNode/relNode。
      • pg_tblspc/spcNode/version_dir/dbNode/relNode

        对于hashbucket表,在此格式基础上,路径末尾加上_b段页式的逻辑页号。

    blocknum

    bigint

    • -1:所有block的信息(强制从磁盘解析)。
    • 0~MaxBlockNumber:对应block的信息。

    relation_type

    text

    • heap(astore 表)
    • btree(BTree 索引)
    • indexurq(indexurq 页面)

    read_memory

    boolean

    • false,从磁盘文件解析。
    • true,首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。
  • gs_shared_storage_xlogdump_lsn(start_lsn text, end_lsn text, xlog_file_path text)

    描述:用于解析Xlog日志共享盘的指定LSN范围之内的Xlog日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前Xlog位置。

    返回值类型:text

    备注:必须是系统管理员或运维管理员才能执行此函数。

    表27 gs_shared_storage_xlogdump_lsn入参参数说明

    参数

    类型

    描述

    start_lsn

    text

    需要解析的Xlog的起始LSN。

    end_lsn

    text

    需要解析的Xlog的结束LSN。

    xlog_file_path

    text

    可选参数。需要解析的Xlog所在Xlog日志共享盘的路径。不指定时,解析当前CN/DN所有共享盘的Xlog。

    使用示例:

    # 支持两个入参,start_lsn与end_lsn
    gaussdb=# SELECT * FROM gs_shared_storage_xlogdump_lsn('00000000/01000000','00000000/19B08128');
                            output_filepath
    ----------------------------------------------------------------
     /var/lib/engine/data1/data/dn_6001/01000000_19b08128_6001.xlog
    (1 row)
    
    # 支持三个入参,start_lsn、end_lsn与xlog_file_path
    gaussdb=# SELECT * FROM gs_shared_storage_xlogdump_lsn('00000000/01000000','00000000/19B08128','/data/nfs/6001');
                            output_filepath
    ----------------------------------------------------------------
     /var/lib/engine/data1/data/dn_6001/01000000_19b08128_6001.xlog
    (1 row)
  • gs_shared_storage_ctlinfo()

    描述:用于获取当前CN/DN共享盘元数据相关信息。

    返回值类型:record

    表28 gs_shared_storage_ctlinfo出参参数说明

    参数名

    类型

    描述

    xlog_file_path

    text

    Xlog日志共享盘的路径。

    system_id

    text

    当前Xlog日志共享盘上存储的system_id值。

    term

    text

    当前Xlog日志共享盘上存储的term值。

    xlog_file_size

    text

    Xlog日志共享盘上存Xlog的空间大小。

    insert_tail

    text

    Xlog日志共享盘上当前有效的最小LSN。

    insert_head

    text

    Xlog日志共享盘上当前有效的最大LSN。

    shared_storage_flush_lsn

    text

    Xlog日志共享盘上当前实际落盘LSN。

    使用示例:

    gaussdb=# SELECT * FROM gs_shared_storage_ctlinfo();
     xlog_file_path |      system_id       | term | xlog_file_size |    insert_tail    |    insert_head    | shared_storage_flush_lsn
    ----------------+----------------------+------+----------------+-------------------+-------------------+--------------------------
     /data/nfs/6001 | 18020659526041888084 | 1    | 1073741824     | 00000000/01000000 | 00000000/19B08128 | 00000000/19B08128
    (1 row)
    
  • gs_index_verify(oid oid, uint32 blkno)

    描述:用于校验UBtree索引页面或者索引树上key的顺序是否正确。

    返回值类型:record

    表29 gs_index_verify参数说明

    参数

    类型

    描述

    oid

    oid

    • 索引文件relfilenode,可以通过SELECT relfilenode FROM pg_class where relname='name'查询,其中name表示对应的索引文件名字。

    blkno

    uint32

    • 0:表示检验整个索引树上所有页面。
    • 大于0:表示校验页面编码等于blkno的索引页面。
  • gs_index_recycle_queue(Oid oid, int type, uint32 blkno)

    描述:用于解析UBtree索引回收队列信息。

    返回值类型:record

    表30 gs_index_recycle_queue参数说明

    参数

    类型

    描述

    oid

    oid

    • 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字。

    type

    int

    • 0:表示解析整个待回收队列。
    • 1:表示解析整个空页队列。
    • 2:表示解析单个页面。

    blkno

    uint32

    回收队列页面编号,该参数只有在type=2的时候有效,blkno有效取值范围为1~4294967294。

  • gs_stat_wal_entrytable(int64 idx)

    描述:用于输出Xlog中预写日志插入状态表的内容。

    返回值类型:record

    表31 gs_stat_wal_entrytable参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    idx

    int64

    • -1:查询数组所有元素。
    • 0-最大值:具体某个数组元素内容。

    输出参数

    idx

    uint64

    记录对应数组中的下标。

    输出参数

    endlsn

    uint64

    记录的LSN标签。标识当前entry对应的Xlog是否已经完全复制到wal buffer中:

    • 0:非COPIED。
    • 非0:COPIED。

    输出参数

    lrc

    int32

    记录对应的LRC。

    输出参数

    status

    uint32

    当前版本预留字段,查询结果显示为0。

  • gs_walwriter_flush_position()

    描述:输出预写日志的刷新位置。

    返回值类型:record

    表32 gs_walwriter_flush_position参数说明

    参数类型

    参数名

    类型

    描述

    输出参数

    last_flush_status_entry

    int32

    Xlog flush上一个刷盘的tblEntry下标索引。

    输出参数

    last_scanned_lrc

    int32

    Xlog flush上一次扫描到的最后一个tblEntry记录的LRC。

    输出参数

    curr_lrc

    int32

    WALInsertStatusEntry状态表中LRC最新的使用情况,该LRC表示下一个Xlog记录写入时在WALInsertStatusEntry对应的LRC值。

    输出参数

    curr_byte_pos

    uint64

    Xlog记录写入WAL 文件,最新分配的位置,下一个Xlog记录插入点。

    输出参数

    prev_byte_size

    uint32

    上一个Xlog记录的长度。

    输出参数

    flush_result

    uint64

    当前全局Xlog刷盘的位置。

    输出参数

    send_result

    uint64

    当前主机上Xlog发送位置。

    输出参数

    shm_rqst_write_pos

    uint64

    共享内存中记录的XLogCtl中LogwrtRqst请求的write位置。

    输出参数

    shm_rqst_flush_pos

    uint64

    共享内存中记录的XLogCtl中LogwrtRqst请求的flush位置。

    输出参数

    shm_result_write_pos

    uint64

    共享内存中记录的XLogCtl中LogwrtResult的write位置。

    输出参数

    shm_result_flush_pos

    uint64

    共享内存中记录的XLogCtl中LogwrtResult的flush位置。

    输出参数

    curr_time

    text

    当前时间。

  • gs_walwriter_flush_stat(int operation)

    描述:用于统计预写日志write与sync的次数频率与数据量,以及Xlog文件的信息。

    返回值类型:record

    表33 gs_walwriter_flush_stat参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    operation

    int

    • -1: 关闭统计开关(默认状态为关闭)。
    • 0:打开统计开关。
    • 1:查询统计信息。
    • 2:重置统计信息。

    输出参数

    write_times

    uint64

    Xlog调用write接口的次数。

    输出参数

    sync_times

    uint64

    Xlog调用sync接口次数。

    输出参数

    total_xlog_sync_bytes

    uint64

    Backend线程请求写入Xlog总量统计值。

    输出参数

    total_actual_xlog_sync_bytes

    uint64

    调用sync接口实际刷盘的Xlog总量统计值。

    输出参数

    avg_write_bytes

    uint32

    每次调用XLogWrite接口请求写的Xlog量。

    输出参数

    avg_actual_write_bytes

    uint32

    实际每次调用write接口写的Xlog量。

    输出参数

    avg_sync_bytes

    uint32

    平均每次请求sync的Xlog量。

    输出参数

    avg_actual_sync_bytes

    uint32

    实际每次调用sync刷盘Xlog量。

    输出参数

    total_write_time

    uint64

    调用write操作总时间统计(单位:us)。

    输出参数

    total_sync_time

    uint64

    调用sync操作总时间统计(单位:us)。

    输出参数

    avg_write_time

    uint32

    每次调用write接口平均时间(单位:us)。

    输出参数

    avg_sync_time

    uint32

    每次调用sync接口平均时间(单位:us)。

    输出参数

    curr_init_xlog_segno

    uint64

    当前最新创建的Xlog段文件编号。

    输出参数

    curr_open_xlog_segno

    uint64

    当前正在写的Xlog段文件编号。

    输出参数

    last_reset_time

    text

    上一次重置统计信息的时间。

    输出参数

    curr_time

    text

    当前时间。

  • pg_ls_tmpdir()

    描述:返回默认表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。

    参数:nan

    返回值类型:record

    备注:必须是系统管理员或者监控管理员才能执行此函数。

    参数类型

    参数名

    类型

    描述

    输出参数

    name

    text

    文件名称。

    输出参数

    size

    int8

    文件大小(单位:byte)。

    输出参数

    modification

    timestamptz

    文件最后修改时间。

  • pg_ls_tmpdir(oid)

    描述:返回指定表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。

    参数:oid

    返回值类型:record

    备注:必须是系统管理员或者监控管理员才能执行此函数。

    参数类型

    参数名

    类型

    描述

    输入参数

    oid

    oid

    表空间id。

    输出参数

    name

    text

    文件名称。

    输出参数

    size

    int8

    文件大小(单位:byte)。

    输出参数

    modification

    timestamptz

    文件最后修改时间。

  • pg_ls_waldir()

    描述:返回预写日志(WAL)目录中每个文件的名称、大小和最后修改时间。

    参数:nan

    返回值类型:record

    备注:必须是系统管理员或者监控管理员才能执行此函数。

    参数类型

    参数名

    类型

    描述

    输出参数

    name

    text

    文件名称。

    输出参数

    size

    int8

    文件大小(单位:byte)。

    输出参数

    modification

    timestamptz

    文件最后修改时间。

  • gs_stat_anti_cache()

    描述:返回AntiCache的相关统计信息。

    参数:nan

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输出参数

    table_nums

    int8

    分区数量。

    输出参数

    table_init_size

    int8

    分区初始大小。

    输出参数

    table_max_size

    int8

    分区大小上限。

    输出参数

    anti_cache_upper_limit_size

    int8

    AntiCache大小上限。

    输出参数

    anti_cache_size

    int8

    实时AntiCache大小。

    输出参数

    anti_cache_max_table_size

    int8

    实时最大分区大小。

    输出参数

    anti_cache_min_table_size

    int8

    实时最小分区大小。

  • gs_stat_vlog_buffer()

    描述:返回verifyLog buffer的相关统计信息。

    参数:nan

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输出参数

    vbuffer_write_offset

    int8

    vlog写入位置。

    输出参数

    vbuffer_flushed_offset

    int8

    vlog刷盘位置。

    输出参数

    max_vbuffer_flushed_value

    int8

    vlog下刷最大字节数。

    输出参数

    min_vbuffer_flushed_vlaue

    int8

    vlog下刷最小字节数。

    输出参数

    ave_vbuffer_flushed_vlaue

    int8

    vlog下刷平均字节数。

    输出参数

    vbuffer_flush_latency

    int8

    vlog下刷时延统计。

  • gs_stat_vlog_related_io()

    描述:返回verifylog文件读写的io相关统计信息。

    参数:nan

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输出参数

    read_data_iops

    float8

    每秒读文件的页面数。

    输出参数

    vlog_read_iops

    float8

    每秒读vlog的页面数。

    输出参数

    vlog_write_iops

    float8

    每秒写vlog的页面数。

  • gs_stat_vlog_file()

    描述:查询还有哪些Vlog(Verifylog)文件未回收。

    参数:nan

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输出参数

    last_recycled_segno

    int8

    已完成回收的最后一个Vlog文件段号。

    输出参数

    target_recycle_segno

    int8

    当前待回收的目标Vlog文件段号。

    输出参数

    max_segno

    int8

    当前最大的Vlog文件段号。

  • pause_anti_cache_recycle(boolean pause)

    描述:设置是否暂停AntiCache回收。本函数仅供内部使用。

    参数:pause表示是否暂停AntiCache回收,类型为boolean。pause为true表示AntiCache暂停回收,pause为false表示AntiCache正常回收。

    返回值类型:text

    示例:

    #在内部版本中,设置AntiCache正常回收
    gaussdb=# select * from pause_anti_cache_recycle(false);
               result           
    ----------------------------
     Anticache recycle resumed.
    (1 row)
    
    #在内部版本中,设置AntiCache暂停回收
    gaussdb=# select * from pause_anti_cache_recycle(true);
              result           
    ---------------------------
     Anticache recycle paused.
    (1 row)
    
    #在正式版本中,不支持设置
    gaussdb=# select * from pause_anti_cache_recycle(false);
                             result                          
    ---------------------------------------------------------
     This function is not allowed to use in release version.
    (1 row)
  • gs_write_term_log(void)

    描述:写入一条日志记录DN节点当前的term值。备DN节点返回false,主DN节点写入成功后返回true。

    返回值类型:Boolean

  • gs_stat_space(bool init)

    描述:用于查询UStore中做Insert操作时拓展页面的状态。

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输入参数

    init

    bool

    是否重置已统计的数据。

    输出参数

    access_func

    int8

    relation_get_buffer_for_utuple接口访问总次数。

    输出参数

    cache_blk

    int8

    relation_get_buffer_for_utuple获取缓存次数。

    输出参数

    cache_succ

    int8

    relation_get_buffer_for_utuple获取缓存成功次数。

    输出参数

    nblk_first

    int8

    relation_get_buffer_for_utuple中第一次获取nblocks-1次数。

    输出参数

    nblk_first_succ

    int8

    relation_get_buffer_for_utuple中第一次获取nblocks-1成功次数。

    输出参数

    nblk_second

    int8

    relation_get_buffer_for_utuple中第二次获取nblocks-1次数。

    输出参数

    nblk_second_succ

    int8

    relation_get_buffer_for_utuple中第二次获取nblocks-1成功次数。

    输出参数

    fsm_first

    int8

    第一次访问FSM次数。

    输出参数

    fsm_first_success

    int8

    第一次访问FSM成功次数。

    输出参数

    fsm_rewrite

    int8

    FSM回写次数。

    输出参数

    fsm_second

    int8

    第二次访问FSM次数。

    输出参数

    fsm_second_success

    int8

    第二次访问FSM成功次数。

    输出参数

    prune_count

    int8

    relation_get_buffer_for_utuple中Prune次数。

    输出参数

    prune_space

    int8

    relation_get_buffer_for_utuple中Prune总空间。

    输出参数

    coprune_count

    int8

    联合清理执行次数。

    输出参数

    coprune_scan_blocks

    int8

    联合清理扫描总页数。

    输出参数

    coprune_prune_count

    int8

    联合清理Prune次数。

    输出参数

    coprune_prune_space

    int8

    联合清理Prune总空间。

    输出参数

    con_extend_count

    int8

    并发扩页数量。

    输出参数

    con_extend_time

    int8

    并发扩页总时间。

    输出参数

    single_extend_time

    int8

    单一扩页次数。

    示例:

    gaussdb=# SELECT * FROM gs_stat_space(false);
     access_func | cache_blk | cache_succ | nblk_first | nblk_first_succ | nblk_second | nblk_second_succ | fsm_first | fsm_first_success | fsm_rewrite | fsm_
    second | fsm_second_success | prune_count | prune_space | coprune_count | coprune_scan_blocks | coprune_prune_count | coprune_prune_space | con_extend_count
     | con_extend_time | single_extend_count
    -------------+-----------+------------+------------+-----------------+--------------+-------------------+-----------+-------------------+-------------+-----
    -------+--------------------+-------------+-------------+---------------+---------------------+---------------------+---------------------+-----------------
    -+-----------------+---------------------
        10082397 |  10082397 |   10082235 |         88 |              78 |        47021 |             47021 |       162 |                74 |      360996 |
    360996 |             270948 |        6711 |           0 |         45497 |              222619 |                   0 |                   0 |             3675
     |        25542884 |               26791
    (1 row)
    

    备注:请重点关注cache_succ此值较小说明系统缓存失效,prune_space 此值较小表示UStore数据页页面清理机制可能存在问题,con_extend_time此值过高可能表明UStore并发拓页时耗时较高。

  • gs_redo_upage(directory_path text, backup_path text, blocknum bigint, relation_type text, xlog_path text, lsn text)

    描述:用于将备份的特定UStore数据页面重放到指定LSN,并在重放期间校验页面,若检测到页面受损则直接落盘该坏块,返回落盘路径、页面LSN以及受损信息,否则重放至指定LSN并落盘页面后返回,必须是系统管理员或运维管理员才能执行此函数。

    返回值类型:record

    参数类型

    参数

    类型

    描述

    输入参数

    directory_path

    text

    备份文件所在目录。

    输入参数

    backup_path

    text

    备份表文件的相对路径,与备份文件所在目录拼成表文件的完整路径,例如,base/15635/12488,当备份不存在时,传入null。

    输入参数

    blocknum

    bigint

    0~MaxBlockNumber:对应页面的块号。

    输入参数

    relation_type

    text

    • uheap(Ustore数据页)。
    • ubtree(Ustore索引页)。
    • indexurq(Urq页面)。
    • undo_record(Undo record页面)。
    • undo_slot(Transaction slot页面)。

    输入参数

    xlog_path

    text

    归档日志目录的绝对路径。

    输入参数

    lsn

    text

    lsn由两个16进制数(各32 bits)组成,中间通过"/"隔开,例如:2/962D1DF8。如果是0则重放到最新版本。

    输出参数

    output_filename

    text

    文件的落盘路径与文件名。

    输出参数

    output_lsn

    text

    最后一次页面重放的LSN。

    输出参数

    corruption_desc

    text

    页面受损情况描述。

  • gs_xlogdump_bylastlsn(last_lsn text, blocknum bigint, relation_type text)

    描述:传入一个页面LSN以及块号,解析LSN对应的WAL日志,并获取对应块号的last LSN继续解析,直到last LSN为0或者更老版本的WAL日志已被复用回收,并将解析后的日志落盘到指定路径,必须是系统管理员或运维管理员才能执行此函数。本系统函数不支持备机调用。

    返回值类型:text

    参数类型

    参数名

    类型

    描述

    输入参数

    last_lsn

    text

    解析指定页面的LSN,基于十六进制表示,如12BA/32CDEDDD,LSN可通过页面解析工具(gs_parse_page_bypath等)获取。

    输入参数

    blocknum

    bigint

    指定页面的逻辑块号。

    参数范围:-1~MaxBlockNumber。

    块号指定为-1时表示从WAL日志中获取默认块号。

    输入参数

    relation_type

    text

    指定解析页面的类型。

    参数范围:uheap、ubtree、heap、btree、undo_record、undo_slot。

    输出参数

    output_filepath

    text

    WAL日志解析结果的落盘路径。

    示例:
    # 获取页面LSN信息
    # 函数调用前请依据参数说明中的内容确保文件路径真实存在
    gaussdb=# SELECT * FROM gs_parse_page_bypath('base/15833/16768', 0, 'uheap', false);
                            output_filepath
    ---------------------------------------------------------------
     data1/database/cluster/primary/data/1663_15833_16768_0.page
    (1 row)
    gaussdb=# SELECT * FROM gs_xlogdump_bylastlsn('0/4593570', -1, 'uheap');
                            output_filepath
    -------------------------------------------------------------------
     /data1/database/cluster/primary/data/gs_log/dump/4593570_-1.xlog
    (1 row)
    gaussdb=# SELECT * FROM gs_xlogdump_bylastlsn('0/4593570', 0, 'ubtree');
    ERROR:  The input lsn 0/4593570 related xlog is not ubtree.
  • dbe_perf.get_full_sql_by_parent_id_and_timestamp(parent_id bigint, start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)

    描述:根据parent_id获取某个时间段内,执行某个存储过程的数据库级的全量SQL及其子语句的记录。只可在系统库中查询到结果,用户库中无法查询。

    返回值类型:record

    参数

    类型

    描述

    parent_id

    bigint

    指定需要检索的存储过程的调用语句的unique_sql_id。

    start_timestamp

    timestamp with time zone

    SQL启动时间范围的开始时间点。

    end_timestamp

    timestamp with time zone

    SQL启动时间范围的结束时间点。

    示例:

    gaussdb=# CREATE TABLE test(a int,b int);
    NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default.
    HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
    CREATE TABLE
    gaussdb=# INSERT INTO test values(1,1);
    INSERT 0 1
    gaussdb=# CREATE PROCEDURE mypro1() as num int;
    gaussdb$# begin
    gaussdb$# INSERT INTO test values(2,2);
    gaussdb$# DELETE FROM test where a = 2;
    gaussdb$# end;
    gaussdb$# /
    CREATE PROCEDURE
    
    --打开参数,跟踪存储过程子语句。
    gaussdb=# SET instr_unique_sql_track_type = 'all';
    SET
    
    --打开参数,dbe_perf.statement_history表生成全量语句记录。
    gaussdb=# SET track_stmt_stat_level = 'L0,L0';
    SET
    
    gaussdb=# CALL mypro1();
     mypro1
    --------
    
    (1 row)
    
    gaussdb=# SET track_stmt_stat_level = 'off,L0';
    SET
    
    gaussdb=# SET instr_unique_sql_track_type = 'top';
    SET
    
    --查询关键信息,作为函数参数使用。
    gaussdb=# SELECT query,unique_query_id,start_time,finish_time FROM dbe_perf.statement_history;
                    query                 | unique_query_id |          start_time           |          finish_time
    --------------------------------------+-----------------+-------------------------------+-------------------------------
     set track_stmt_stat_level = 'L0,L0'; |       636388010 | 2023-06-02 17:40:49.176155+08 | 2023-06-02 17:40:49.176543+08
     call mypro1();                       |       536458473 | 2023-06-02 17:40:59.028144+08 | 2023-06-02 17:40:59.032027+08
     delete from test where a = ?         |       583323884 | 2023-06-02 17:40:59.029955+08 | 2023-06-02 17:40:59.031577+08
     insert into test values(?,?)         |       769279931 | 2023-06-02 17:40:59.029219+08 | 2023-06-02 17:40:59.029947+08
    (4 rows)
    
    --通过外层语句的unique_query_id、外层语句的开始和结束时间作为参数,查询该时间段内,指定存储过程及其子语句的信息。
    gaussdb=# SELECT query FROM dbe_perf.get_full_sql_by_parent_id_and_timestamp(536458473,'2023-06-02 17:40:59.028144+08','2023-06-02 17:40:59.032027+08');
                query
    ------------------------------
     call mypro1();
     delete from test where a = ?
     insert into test values(?,?)
    (3 rows)
    
    gaussdb=# DROP PROCEDURE mypro1();
    DROP PROCEDURE
    gaussdb=# DROP TABLE test;
    DROP TABLE
  • gs_index_dump_read(int8 reset, text out_type)

    描述:用于查询索引获取新页面时在循环队列中产生的buffer read信息和索引页面相同key从左到右遍历叶子页面的buffer read信息。

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输入参数

    reset

    int8

    • 0:将统计信息reset为初始值0,重新开始统计。
    • 1:直接show出当前的统计信息。

    输入参数

    out_type

    text

    • urq:输出循环队列的统计信息。
    • ubtree:输出索引页的统计信息。
    • all:循环队列和索引页的统计信息全部输出。

    输出参数

    relfilenode

    oid

    统计到的最大buffer read值对应的索引relfilenode。

    输出参数

    max_count

    int8

    最大buffer read值。

    输出参数

    ave_count

    int8

    平均buffer read值。

    • 该接口当前仅支持USTORE索引表。
    • 该接口执行时,先reset清理、将记录全部置为0。再进行查询,直到下次统计到信息值之前,查询记录会一直为0。查询示例如下:
      gaussdb=# SELECT * FROM gs_index_dump_read(0, 'all');
      relfilenode | max_count | ave_count
      --------------+-------------+-------------
      |                     |
      (1 row)
      gaussdb=# SELECT * FROM gs_index_dump_read(1, 'all');
      relfilenode | max_count | ave_count
      --------------+-------------+-------------
      0 |                  0 |                  0
      0 |                  0 |                  0
      (2 rows)
  • pg_get_ilmdef(pidx integer)

    描述:行存压缩系统函数,根据输入的ilm策略索引返回对应的策略信息

    返回值类型:text

    参数类型

    参数名

    类型

    描述

    输入参数

    pidx

    integer

    ilm策略的序号。

    输出参数

    ilm_policy_info

    text

    指定ilm策略的策略信息。

  • gs_shared_storage_flush_stat(int operation)

    描述:统计共享盘的写入数据量、写入速度、写入时间、读取数据量、读取速度、读取时间等。

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输入参数

    operation

    int

    • -1:关闭统计开关。
    • 0:打开统计开关(默认状态为打开)。
    • 1:查询统计信息。
    • 2:重置统计信息。

    关闭统计开关后重新打开时会清理之前的统计信息。

    输出参数

    stat_switch

    bool

    统计开关是否打开。

    输出参数

    write_times

    uint64

    shared_storage_xlog_copy线程调用dorado_write_xlog接口的次数。

    输出参数

    avg_write_bytes

    uint32

    每次调用dorado_write_xlog接口请求写的Xlog量(单位:B)。

    输出参数

    avg_actual_write_bytes

    uint32

    实际每次调用dorado_write_xlog接口写的Xlog量(单位:B)。

    输出参数

    total_write_time

    uint64

    调用dorado_write_xlog操作总时间统计(单位:us)。

    输出参数

    avg_write_time

    uint32

    每次调用dorado_write_xlog接口平均时间(单位:us)。

    输出参数

    avg_write_speed

    uint32

    平均调用dorado_write_xlog接口请求写Xlog的速度(单位:KB/s)。

    输出参数

    avg_actual_write_speed

    uint32

    实际平均调用dorado_write_xlog接口请求写Xlog的速度(单位:KB/s)。

    输出参数

    total_write_sleep_time

    uint64

    shared_storage_xlog_copy线程总睡眠时间。

    输出参数

    read_times

    uint64

    walreceiver线程调用dorado_read_xlog接口的次数。

    输出参数

    avg_read_bytes

    uint32

    每次调用dorado_read_xlog接口请求写的Xlog量(单位:B)。

    输出参数

    avg_actual_read_bytes

    uint32

    实际每次调用dorado_read_xlog接口写的Xlog量(单位:B)。

    输出参数

    total_read_time

    uint64

    调用dorado_read_xlog操作总时间统计(单位:us)。

    输出参数

    avg_read_time

    uint32

    每次调用dorado_read_xlog接口平均时间(单位:us)。

    输出参数

    avg_read_speed

    uint32

    平均调用dorado_read_xlog接口请求写Xlog的速度(单位:KB/s)。

    输出参数

    avg_actual_read_speed

    uint32

    实际平均调用dorado_read_xlog接口请求写Xlog的速度(单位:KB/s)。

    输出参数

    total_read_sleep_time

    uint64

    walreceiver线程总睡眠时间。

    输出参数

    stat_start_time

    timestamptz

    本次统计数据开始时间,若无重置统计信息操作则为GaussDB程序开始运行时间,若有重置统计信息操作则为上次重置时间。

    输出参数

    stat_end_time

    timestamptz

    本次统计数据结束时间,若统计开关开启则为当前时间,若统计开关关闭则为上次关闭时间。

    示例:

    gaussdb=# SELECT * FROM gs_shared_storage_flush_stat(1);
     stat_switch | write_times | avg_write_bytes | avg_actual_write_bytes | total_write_time | avg_write_time | avg_write_speed | avg_actual_write_speed | total_write_sleep_time | read_times | avg
    _read_bytes | avg_actual_read_bytes | total_read_time | avg_read_time | avg_read_speed | avg_actual_read_speed | total_read_sleep_time |        stat_start_time        |         stat_end_time
    
    -------------+-------------+-----------------+------------------------+------------------+----------------+-----------------+------------------------+------------------------+------------+----
    ------------+-----------------------+-----------------+---------------+----------------+-----------------------+-----------------------+-------------------------------+------------------------
    -------
     t           |       43644 | 8624            | 8624                   |        263922553 | 6047           | 1392            | 1392                   |            26918503404 |       7451 | 140
    13          | 14013                 |         5321082 | 714           | 19163          | 19163                 |                     0 | 2023-12-18 07:18:39.766855+08 | 2023-12-18 16:29:22.757
    535+08
    (1 row)
  • gs_stat_freespace(Oid relid, Oid partid, char type, int sample_ratio)

    描述:通过统计信息或采样的方法估算表/分区表/索引的膨胀率,输出空间使用统计信息及膨胀率信息。

    返回值类型:record

    参数类型

    参数

    类型

    描述

    输入参数

    relation_oid

    OID

    要查询的数据表/分区表主表/索引的OID。

    输入参数

    partition_oid

    OID

    分区表/二级分区表/LOCAL分区索引的OID。
    • 如果relation_oid为非分区表/非LOCAL分区索引/GPI,本入参无意义。
    • 如果relation_oid为分区表/二级分区表/LOCAL分区索引,partition_oid取值为0,代表输出所有分区的信息。

    输入参数

    relation_type

    CHAR

    表类型:
    • 'r':表示查询目标表为行存数据表。
    • 'i':表示查询目标表为行存索引表。

    输入参数

    sample_ratio

    INT8

    采样比例,取值范围为0~100。
    • 当sample_ratio取值为0时,INFO为通过统计信息估算出的膨胀率。
    • 当sample_ratio取值为1-100时,INFO为通过采样估算出的膨胀率。

    输入参数

    read_memory

    BOOL

    是否从内存读取页面:
    • true:表示为从内存读取页面;
    • false:表示为从磁盘读取页面。暂时只支持取值为 false。

    输出参数

    OID

    OID

    要查询的数据表/分区表/二级分区表/索引的OID。

    输出参数

    INFO

    TEXT

    • 当sample_ratio=0时,INFO为估算页面膨胀率。
    • 当sample_ratio>0时,INFO为页面使用率采样统计信息,包括页头长度、元组平均长度、平均normal元组数量、平均dead元组数量、平均unused元组数量、平均redirected元组数量、页面平均td数(Ustore数据表)、页面平均potential_freespace、实际freespace(页面upper - lower)、relation总页面数、通过采样信息估算数据表/索引占空间大小、通过采样信息估算数据表/索引膨胀率。
    • 该接口当前仅支持行存表,不支持时序表、段页式表、hashbucket表、本地临时表和全局临时表。对于不支持表类型上的索引同样不支持空间统计信息估算。
    • CN节点查询该接口,查询结果仅代表本节点相关统计信息与膨胀率估算情况,不包含对应DN的相关信息。如需查询DN节点统计信息与膨胀率估算结果,需要连接DN节点进行查询。
    • 备机上使用此接口时,当sample_ratio取值为0时,即根据统计信息估算,无法保证实时准确率。

    示例:

    -- 查询普通表信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    NOTICE:  table "t" does not exist, skipping
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int) WITH (storage_type=ustore);
    CREATE TABLE
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 110000));
    INSERT 0 110000
    -- 更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    VACUUM
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace((SELECT oid FROM pg_class WHERE relname='t'), 0, 'r', 0, false);
      oid  |                                                                                                       info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    --------------------------------------------------------------------
     16735 | live_tuples: 110000, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 440000, page_header_size: 56,  nblocks: 419, approximate_table_size: 2113464 (Bytes), approximate expansion rate: 1.62
    (1 row)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace((SELECT oid FROM pg_class WHERE relname='t'), 0, 'r', 80, false);
      oid  |
                          info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    -----------------------------------------
     16732 | Average page stat info: page_header_size: 28, tuple has storage: 222.22, normal tuple: 222.22, dead tuple: 0.00, unused tuple: 0.00, redirected tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 152.00. Freespace stat info: nblocks: 45, approximate_table_size: 342495 (Bytes), approximate expansion rate: 1.08.
    (1 row)
    
    -- 查询分区表单个分区信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int) WITH (storage_type=ustore) PARTITION BY range(a) (PARTITION p1 VALUES LESS THAN(3000), PARTITION p2 VALUES LESS THAN(maxvalue));
    CREATE TABLE
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 10000));
    INSERT 0 10000
    
    -- 更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    VACUUM
    
    -- 查询 oid:
    gaussdb=# SELECT oid FROM pg_class WHERE relname='t';
      oid
    -------
     16802
    (1 row)
    
    gaussdb=# SELECT oid, relname, parttype FROM pg_partition;
      oid  | relname | parttype
    -------+---------+----------
     16805 | t       | r
     16806 | p1      | p
     16807 | p2      | p
    (3 rows)
    
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace(16802, 16806, 'r', 0, false);
      oid  |                                                                                                     info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    ---------------------------------------------------------------
     16806 | live_tuples: 5998, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 23992, page_header_size: 56,  nblocks: 12, approximate_table_size: 114634 (Bytes), approximate expansion rate: 0.86
    (1 row)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace(16802, 16807, 'r', 0, false);
      oid  |                                                                                                     info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------
     16807 | live_tuples: 14002, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 56008, page_header_size: 56,  nblocks: 27, approximate_table_size: 267550 (Bytes), approximate expansion rate: 0.83
    (1 row)
    
    -- 查询分区表所有分区信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int) WITH (storage_type=ustore) PARTITION BY range(a) (PARTITION p1 VALUES LESS THAN(3000), PARTITION p2 VALUES LESS THAN(maxvalue));
    CREATE TABLE
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 10000));
    INSERT 0 10000
    
    -- 更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    
    -- 查询 oid:
    gaussdb=# SELECT oid FROM pg_class WHERE relname='t';
    gaussdb=# 
      oid
    -------
     16802
    (1 row)
    
    gaussdb=# SELECT oid, relname, parttype FROM pg_partition;
      oid  | relname | parttype
    -------+---------+----------
     16805 | t       | r
     16806 | p1      | p
     16807 | p2      | p
    (3 rows)
    
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace(16802, 0, 'r', 0, false);
      oid  |                                                                                                     info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------
     16806 | live_tuples: 5998, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 23992, page_header_size: 56,  nblocks: 12, approximate_table_size: 114634 (Bytes), approximate expansion rate: 0.86
     16807 | live_tuples: 14002, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 56008, page_header_size: 56,  nblocks: 27, approximate_table_size: 267550 (Bytes), approximate expansion rate: 0.83
    (2 rows)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace(16802, 0, 'r', 60, false);
      oid  |
                            info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    --------------------------------------------
     16806 | Average page stat info: page_header_size: 56, tuple has storage: 249.92, normal tuple: 249.92, dead tuple: 0.00, unused tuple: 0.00, redirected tuple: 0.00, td_count: 4.00, potential_freespace: 1034.33, actual_freespace: 1034.33. Freespace stat info: nblocks: 12, approximate_table_size: 84636 (Bytes), approximate expansion rate: 1.16.
     16807 | Average page stat info: page_header_size: 56, tuple has storage: 259.30, normal tuple: 259.30, dead tuple: 0.00, unused tuple: 0.00, redirected tuple: 0.00, td_count: 4.00, potential_freespace: 771.70, actual_freespace: 771.70. Freespace stat info: nblocks: 27, approximate_table_size: 197532(Bytes), approximate expansion rate: 1.12.
    (2 rows)
    
    -- 查询普通索引信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int, b int, c varchar(1000)) WITH (storage_type=ustore);
    CREATE TABLE
    gaussdb=# CREATE INDEX ON t(a);
    CREATE INDEX
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 100000), generate_series(1, 100000), 'kjgkjature');
    INSERT 0 100000
    
    -- 更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    VACUUM
    
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace((SELECT oid FROM pg_class WHERE relname='t_a_idx'), 0, 'i', 0, false);
      oid  |                                                                                                                        info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------
     16776 | live_tuples: 100000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 401548, page_header_size: 24, nblocks: 387, approximate_table_size: 2838700 (Bytes), approximate expansion rate: 1.12
    (1 row)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace((SELECT oid FROM pg_class WHERE relname='t_a_idx'), 0, 'i', 60, false);
      oid  |
                           info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------
     16776 | Average page stat info: page_header_size: 24, tuple has storage: 260.39, normal tuple: 260.39, dead tuple: 0.00, unused tuple: 0.02, redirected tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 845.05. Freespace stat info: nblocks: 387, approximate_table_size: 3044529(Bytes), approximate expansion rate: 1.04.
    (1 row)
    
    -- 查询 local 分区索引单个分区信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int) WITH (storage_type=ustore) PARTITION BY range(a) (PARTITION p1 VALUES LESS THAN(3000), PARTITION p2 VALUES LESS THAN(maxvalue));
    CREATE TABLE
    gaussdb=# CREATE INDEX ON t(a) LOCAL;
    CREATE INDEX
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 10000));
    INSERT 0 10000
    
    -- 更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    VACUUM
    
    -- 查询 oid:
    gaussdb=# SELECT oid FROM pg_class WHERE relname='t_a_idx';
      oid
    -------
     16814
    (1 row)
    
    gaussdb=# SELECT oid, relname, parttype FROM pg_partition;
      oid  | relname  | parttype
    -------+----------+----------
     16811 | t        | r
     16812 | p1       | p
     16813 | p2       | p
     16815 | p1_a_idx | x
     16816 | p2_a_idx | x
    (5 rows)
    
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 16815, 'i', 0, false);
      oid  |                                                                                                                      info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------
     16815 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40056, page_header_size: 24, nblocks: 14, approximate_table_size: 281400 (Bytes), approximate expansion rate: 0.41
    (1 row)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 16815, 'i', 80, false);
      oid  |
                          info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    -----------------------------------------
     16815 | Average page stat info: page_header_size: 24, tuple has storage: 215.93, normal tuple: 215.93, dead tuple: 0.00, unused tuple: 0.50, redirected tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 2087.43. Freespace stat info: nblocks: 14, approximate_table_size: 91476 (Bytes), approximate expansion rate: 1.25.
    (1 row)
    
    -- 查询 local 分区索引所有分区信息
    -- 建表语句:
    gaussdb=# DROP TABLE IF EXISTS t;
    DROP TABLE
    gaussdb=# CREATE TABLE t(a int) WITH (storage_type=ustore) PARTITION BY range(a) (PARTITION p1 VALUES LESS THAN(3000), PARTITION p2 VALUES LESS THAN(maxvalue));
    CREATE TABLE
    gaussdb=# CREATE INDEX ON t(a) LOCAL;
    CREATE INDEX
    gaussdb=# INSERT INTO t VALUES(generate_series(1, 10000));
    INSERT 0 10000
    更新统计信息:
    gaussdb=# VACUUM ANALYZE t;
    VACUUM
    -- 查询 oid:
    gaussdb=# SELECT oid FROM pg_class WHERE relname='t_a_idx';
      oid
    -------
     16814
    (1 row)
    
    -- 估算膨胀率:
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 0,  'i', 0, false);
      oid  |                                                                                                                      info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------
     16815 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40056, page_header
    _size: 24, nblocks: 14, approximate_table_size: 281400 (Bytes), approximate expansion rate: 0.41
     16816 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40116, page_header
    _size: 24, nblocks: 29, approximate_table_size: 282900 (Bytes), approximate expansion rate: 0.84
    (2 rows)
    
    -- 采样信息:
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 0,  'i', 80, false);
      oid  |
                           info
    
    -------+-----------------------------------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    ------------------------------------------
     16815 | Average page stat info: page_header_size: 24, tuple has storage: 215.93, normal tuple: 215.93, dead tuple: 0.00, unused tuple: 0.50, redirected tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 2087.43. Freespace stat info: nblocks: 14, approximate_table_size: 91476 (Bytes), approximate expansion rate: 1.25.
     16816 | Average page stat info: page_header_size: 24, tuple has storage: 243.28, normal tuple: 243.28, dead tuple: 0.00, unused tuple: 0.24, redirected tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 1323.03. Freespace stat info: nblocks: 29, approximate_table_size: 213237 (Bytes), approximate expansion rate: 1.11.
    (2 rows)
    
    -- 异常输入:
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 0, 'k', 0, false);
    ERROR:  Wrong relation_type input, type should be either 'r' or 'i'
    
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 0, 'i', 600, false);
    ERROR:  Wrong sample_ratio input, sample_ratio should be an integer between 0 and 100
    
    gaussdb=# SELECT * FROM gs_stat_freespace(16814, 0, 'r', 60, false);
    ERROR:  "t_a_idx" is not a ordinary relation or toast relation.
  • gin_clean_pending_list(index regclass)

    描述:清理指定GIN/UGIN索引的“pending list”,将里面的条目批量移动到主索引页面中,返回清理的页面数量。如果pending list过长,可能需要多次执行该函数进行清理,一直清理到返回结果为零。如果索引未开启fastupdate选项,则不会发生清理,结果为0。

    返回值类型:bigint

  • gs_walrcv_writer_stat(int operation)

    描述:用于统计备机接收WAL日志write与sync的次数频率与数据量,以及Xlog文件的信息。

    返回值类型:record

    参数类型

    参数名

    类型

    描述

    输入参数

    operation

    int

    • -1:表示关闭统计开关(默认状态为关闭)。
    • 0:表示打开统计开关。
    • 1:表示查询统计信息。
    • 2:表示重置统计信息。

    关闭统计开关后重新打开时,会清理之前的统计信息。

    输出参数

    enable_stat

    bool

    统计开关是否打开。

    输出参数

    total_write_bytes

    uint64

    备机写入wal文件总量统计值(单位:B)。

    输出参数

    write_count

    uint64

    备机写入wal文件的次数。

    输出参数

    total_write_time

    uint64

    备机写入wal文件操作总时间统计(单位:us)。

    输出参数

    avg_write_time

    uint64

    备机写入wal文件每次调用write接口平均时间(单位:us)。

    输出参数

    max_write_time

    uint64

    备机写入wal文件调用write接口最大用时(单位:us)。

    输出参数

    avg_write_bytes

    uint64

    备机平均每次写入wal文件的数值(单位:B)。

    输出参数

    total_sync_time

    uint64

    备机wal文件落盘操作总时间统计(单位:us)。

    输出参数

    avg_sync_time

    uint64

    备机wal文件落盘每次调用sync接口平均时间(单位:us)。

    输出参数

    max_sync_time

    uint64

    备机写入wal文件调用sync接口最大用时(单位:us)。

    输出参数

    current_xlog_segno

    uint64

    备机当前正在写的Xlog段文件编号。

    输出参数

    newest_xlog_segno

    uint64

    备机最新创建的Xlog段文件编号。

    输出参数

    stat_start_time

    timestamptz

    本次统计数据开始时间。

    输出参数

    stat_end_time

    timestamptz

    本次统计数据结束时间。

    示例:

    gaussdb=# SELECT * FROM gs_walrcv_writer_stat(1);
    -[ RECORD 1 ]------+------------------------------
    enable_stat        | t
    total_write_bytes  | 100754464
    write_count        | 88426
    total_write_time   | 3811972
    avg_write_time     | 43
    max_write_time     | 381739
    avg_write_bytes    | 1139
    total_sync_time    | 22280240
    avg_sync_time      | 251
    max_sync_time      | 655533
    current_xlog_segno | 8154
    newest_xlog_segno  | 8274
    stat_start_time    | 2024-12-05 09:29:15.324159+08
    stat_end_time      | 2024-12-05 09:29:45.92897+08

  • gstrace_reg_sql(scope text, unique_sql_id text)

    描述:添加跟踪的SQL语句,1个数据库实例最多支持1000个SQL语句的跟踪。执行成功后返回添加跟踪的SQL语句的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    unique_sql_id

    必选。指定添加跟踪的SQL语句的unique sql id。

    text类型。通过statement_history表查询到的unique_query_id。

    返回值类型:text

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_reg_sql('LOCAL', '3545025713');
    -[ RECORD 1 ]------+------------------------------
     (datanode,"ACTION:      [GSTRACE]->[TRACE_SQL]          +
     RESULT:                                                 +
     SUCCESSFUL - etrace unique_sql_id (3545025713) tracked")

  • gstrace_reg_func(scope text, function_name text, so_index text, so_offset text, level text)

    描述:添加跟踪的函数,1个数据库实例最多支持1000个函数的跟踪。执行成功后返回添加跟踪的函数的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    function_name

    必选。指定添加跟踪的函数的名称。

    text类型。仅支持系统函数的名称。

    so_index

    可选。函数所在So的序列号。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_index。

    so_offset

    填入so_index时必选,否则不选。函数在So的偏移量。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_offset。

    level

    必选。函数下钻等级。

    text类型。取值范围为'0'、'1'。'0'表示只跟踪函数本身,'1'表示跟踪函数和其子函数。

    返回值类型:text

    示例1,入参不含So序列号和So偏移量:

    gaussdb=# SELECT pg_catalog.gstrace_reg_func('LOCAL', 'pg_sleep', '0');
    ----------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[TRACE_FUNC]                            +
     RESULT:                                                                    +
     SUCCESSFUL - etrace function (_Z8pg_sleepP20FunctionCallInfoData) tracked")

    示例2,入参包含So序列号和So偏移量:

    gaussdb=# SELECT pg_catalog.gstrace_show_mangled_func('LOCAL', 'pg_sleep');
                             gstrace_show_mangled_func
    ----------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[SHOW_MANGLED_FUNC]                    +
     RESULT:                                                                   +
     SUCCESSFUL - function (pg_sleep)'s gangled func are these:                +
     function_name                            so_index so_name        so_offset+
     _Z8pg_sleepP20FunctionCallInfoData       0        gaussdb        59877694 +
     ")
    
    gaussdb=# SELECT pg_catalog.gstrace_reg_func('LOCAL', 'pg_sleep', '0', '59877694', '0');
                                  gstrace_reg_func
    -----------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[TRACE_FUNC]                            +
     RESULT:                                                                    +
     SUCCESSFUL - etrace function (_Z8pg_sleepP20FunctionCallInfoData) tracked")

  • gstrace_unreg_sql(scope text, unique_sql_id text)

    描述:删除跟踪的SQL语句。执行成功后返回删除跟踪的SQL语句的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    unique_sql_id

    必选。指定删除跟踪的SQL语句的unique sql id。

    text类型。通过statement_history表查询到的unique_query_id。

    返回值类型:text

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_unreg_sql('LOCAL', '3545025713');
                            gstrace_unreg_sql
    -----------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[UNTRACE_SQL]               +
     RESULT:                                                        +
     SUCCESSFUL - etrace unique_sql_id (3545025713) delete tracked")

  • gstrace_unreg_func(scope text, function_name text, so_index text, so_offset text)

    描述:删除跟踪的函数。执行成功后返回删除跟踪的函数的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    function_name

    必选。指定删除跟踪的函数的名称。

    text类型。仅支持系统函数的名称。

    so_index

    可选。函数所在So的序列号。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_index。

    so_offset

    填入so_index时必选,否则不选。函数在So的偏移量。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_offset。

    返回值类型:text

    示例1,入参不含So序列号和So偏移量:

    gaussdb=# SELECT pg_catalog.gstrace_unreg_func('LOCAL', 'pg_sleep');
                                  gstrace_unreg_func
    -------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[UNTRACE_FUNC]                            +
     RESULT:                                                                      +
     SUCCESSFUL - etrace function (_Z8pg_sleepP20FunctionCallInfoData) untracked")

    示例2,入参包含So序列号和So偏移量:

    gaussdb=# SELECT pg_catalog.gstrace_show_mangled_func('LOCAL', 'pg_sleep');
                             gstrace_show_mangled_func
    ----------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[SHOW_MANGLED_FUNC]                    +
     RESULT:                                                                   +
     SUCCESSFUL - function (pg_sleep)'s gangled func are these:                +
     function_name                            so_index so_name        so_offset+
     _Z8pg_sleepP20FunctionCallInfoData       0        gaussdb        59877694 +
     ")
    
    gaussdb=# SELECT pg_catalog.gstrace_unreg_func('LOCAL', 'pg_sleep', '0', '59877694');
                                  gstrace_unreg_func
    -------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[UNTRACE_FUNC]                            +
     RESULT:                                                                      +
     SUCCESSFUL - etrace function (_Z8pg_sleepP20FunctionCallInfoData) untracked")

  • gstrace_unreg_all_sql(scope text)

    描述:删除全部跟踪的SQL语句。执行成功后返回删除跟踪的SQL语句的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    返回值类型:text

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_unreg_all_sql('LOCAL');
                    gstrace_unreg_all_sql
    ------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[UNTRACE_ALL_SQL]+
     RESULT:                                             +
     SUCCESSFUL - all traced SQL have been deleted!")

  • gstrace_unreg_all_func(scope text)

    描述:删除全部跟踪的函数。执行成功后返回删除跟踪的函数的结果是成功或失败。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    返回值类型:text

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_unreg_all_func('LOCAL');
                    gstrace_unreg_all_func
    -------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[UNTRACE_ALL_FUNC]+
     RESULT:                                              +
     SUCCESSFUL - all tracked functions have been deleted!+
     ")

  • gstrace_list_configured_sql(scope text)

    描述:查看正在跟踪的SQL语句。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    返回值类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    unique_sql_id

    bigint

    跟踪SQL语句的unique sql id。

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_list_configured_sql('LOCAL');
                 gstrace_list_configured_sql
    -----------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[LIST_TRACE_SQL]+
     RESULT:                                            +
     SUCCESSFUL - these unique_sql_id are tracking:     +
     unique_sql_id                                      +
     3545025713                                         +
     ")

  • gstrace_list_configured_func(scope text)

    描述:查看正在跟踪的函数。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    返回值类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    function_name

    text

    正在跟踪的函数名称。

    so_index

    int

    函数所在So的序列号,0:gaussdb bin,1:libgtmclient.so。

    so_name

    text

    So的名称。

    so_offset

    int

    函数在So的偏移量。

    level

    int

    函数下钻等级。0表示只跟踪函数本身,1表示跟踪函数和其子函数。

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_list_configured_func('LOCAL');
                                  gstrace_list_configured_func
    ----------------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[LIST_TRACE_FUNC]                                  +
     RESULT:                                                                               +
     SUCCESSFUL - these function are tracking:                                             +
     function_name                            so_index so_name        so_offset       level+
     _Z8pg_sleepP20FunctionCallInfoData       0        gaussdb        59877694        0    +
     ")

  • gstrace_show_traced_func(scope text)

    描述:查看正在跟踪的函数的状态。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    返回值类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    function_name

    text

    正在跟踪的函数名称。

    so_index

    int

    函数所在So的序列号,0:gaussdb bin,1:libgtmclient.so。

    so_name

    text

    So的名称。

    so_offset

    int

    函数在So的偏移量。

    level

    int

    函数下钻等级。0表示只跟踪函数本身,1表示跟踪函数和其子函数。

    module

    text

    申请跟踪此函数的模块。

    if_traced

    bool

    函数汇编是否有跳转跟踪的指令。

    if_hp_conflict

    bool

    是否因为和热补丁冲突而自动取消跟踪。

    if_blacklist

    bool

    函数是否在跟踪函数黑名单中。

    ref_count

    int

    函数被跟踪的引用次数。

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_show_traced_func('LOCAL');
                                                                      gstrace_show_traced_func
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[SHOW_TRACED_FUNC]                                                                                                     +
     RESULT:                                                                                                                                                   +
     SUCCESSFUL - tracked function info are these:                                                                                                             +
     function_name                            so_index so_name        so_offset       level   module  if_traced       if_hp_conflict  if_blacklist    ref_count+
     _Z8pg_sleepP20FunctionCallInfoData       0        gaussdb        59877694        0       1       true            false           false           1        +
     ")

  • gstrace_show_mangled_func(scope text, function_name text)

    描述:查看指定函数mangle后的名称。调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。取值范围为'LOCAL、'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    function_name

    必选。指定添加跟踪的函数的名称。

    text类型。仅支持系统函数的名称。

    返回值类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    function_name

    text

    正在跟踪的函数名称。

    so_index

    int

    函数所在So的序列号,0:gaussdb bin,1:libgtmclient.so。

    so_name

    text

    So的名称。

    so_offset

    int

    函数在So的偏移量。

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_show_mangled_func('LOCAL', '_Z8pg_sleepP20FunctionCallInfoData');
                                  gstrace_show_mangled_func
    --------------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[SHOW_MANGLED_FUNC]                              +
     RESULT:                                                                             +
     SUCCESSFUL - function (_Z8pg_sleepP20FunctionCallInfoData)'s gangled func are these:+
     function_name                            so_index so_name        so_offset          +
     _Z8pg_sleepP20FunctionCallInfoData       0        gaussdb        59877694           +
     ")

  • gstrace_show_subfunc(scope text, function_name text, so_index text, so_offset text)

    描述:查看指定函数的全部子函数,调用该函数必须有MONADMIN权限或者SYSADMIN权限。

    参数:

    入参

    说明

    取值范围

    scope

    必选。功能的范围。

    text类型。分布式执行'LOCAL'或'GLOBAL'。'LOCAL'表示仅在当前节点生效,'GLOBAL'表示在所有CN/DN节点上生效。

    function_name

    必选。指定添加跟踪的函数的名称。

    text类型。仅支持系统函数的名称。

    so_index

    可选。函数所在So的序列号。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_index。

    so_offset

    填入so_index时必选,否则不选。函数在So的偏移量。

    text类型。通过pg_catalog.gstrace_show_mangled_func()函数查询到的系统函数的so_offset。

    返回值类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    function_name

    text

    正在跟踪的函数名称。

    so_index

    int

    函数所在So的序列号,0:gaussdb bin,1:libgtmclient.so。

    so_name

    text

    So的名称。

    so_offset

    int

    函数在So的偏移量。

    示例:

    gaussdb=# SELECT pg_catalog.gstrace_show_subfunc('LOCAL', '_Z8pg_sleepP20FunctionCallInfoData');
                                            gstrace_show_subfunc
    ----------------------------------------------------------------------------------------------------
     (datanode,"ACTION:      [GSTRACE]->[SHOW_SUBFUNC]                                                 +
     RESULT:                                                                                           +
     SUCCESSFUL - function (_Z8pg_sleepP20FunctionCallInfoData)'s sub func are these:                  +
     function_name                                                    so_index so_name        so_offset+
     _Z14DatumGetFloat8m                                              0        gaussdb        68889422 +
     _Z21get_current_timestampv                                       0        gaussdb        63347226 +
     _ZL32optutil_gsstat_report_waitstatus23OptUtilExplainWaitStateb  0        gaussdb        59848101 +
     _Z17ProcessInterruptsv                                           0        gaussdb        94358107 +
     _Z9pg_usleepl                                                    0        gaussdb        55249960 +
     ")

  • gs_last_demote_spent_time()

    描述:获取主降备关键步骤耗时,包括线程退出及初始化、checkpoint、共享内存退出及初始化、双写初始化以及bufferpool初始化等。主降备信息查询需要在执行主降备操作的集群的主节点上进行,集群间以及集群内switchover主降备成功后可以查询到相关信息,信息存储于内存,重启后会重置。

    返回类型:setof record

    返回字段说明:

    字段名称

    字段类型

    字段说明

    key_step_name

    text

    主降备关键步骤:

    • thread_exit:主降备线程退出。
    • checkpoint:主降备刷脏。
    • shmem_exit:主降备共享内存退出。
    • shmem_init:主降备共享内存初始化。
    • bufferpool_init:主降备buffer池初始化。
    • dw_init:主降备双写初始化。
    • thread_init:主降备线程初始化。

    spent_time

    int

    主降备关键步骤耗时。

    示例:
    gaussdb=# SELECT * FROM gs_last_demote_spent_time();
      key_step_name  | spent_time
    -----------------+------------
     thread_exit     |    1.00299
     checkpoint      |    3.19896
     shmem_exit      |    .397594
     shmem_init      |    1.74218
     bufferpool_init |    1.24905
     dw_init         |    .038082
     thread_init     |    .400442
    (7 rows)
  • gs_tcache_memory_flush()

    描述:手动唤醒空闲业务线程和stream业务线程,并在对应线程上执行mallctl("thread.tcache.flush", NULL, NULL, NULL, 0);操作,主动清理jemalloc的tcache缓存。

    返回值类型:boolean。成功时则返回t(表示true),失败时则返回f(表示false)。

    • 该函数仅在开启线程池的情况下生效。
    • 仅具有SYSADMIN权限的用户可以使用该函数。
    • 通过此函数可降低other memory,但仅消减jemalloc tcache,对于其他原因导致的other memory升高的场景无效(例如,由大量硬解析引起的内存碎片导致的other memory冲高场景,则无法消减)。

相关文档