更新时间:2022-07-29 GMT+08:00

其它函数

  • pgxc_pool_check()

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

    返回值类型:boolean

  • pgxc_pool_reload()

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

    返回值类型:boolean

  • pgxc_lock_for_backup()

    描述:备份前给集群加锁,备份是为了在新增节点上执行恢复操作。

    返回值类型:boolean

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

  • pg_pool_validate(clear boolean, co_node_name cstring)

    描述:清理CN上无效的后台线程(这些后台线程持有无效的pooler连接,这里无效的pooler连接指的是连接到当前DN备实例的连接)。

    返回值类型:record

  • pg_nodes_memory()

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

    返回值类型:record

  • table_skewness(text)

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

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

    返回值类型:record

  • table_skewness(table_name text, column_name text[, row_num text])

    描述:查看表里某列数据,按hash分布规则,在各节点的占比情况。结果以数据节点上的数据量排序。

    参数:table_name为表名;column_name为列名;row_num表示查看当前列所有数据,可缺省,默认为0。非0时,表示抽取指定条数的数据查看占比情况(每次采样结果可能不相同,只保证采集row_num条数据进行占比计算)。

    返回值类型:record

    示例:

    根据tx表中的a列,按hash分布,则在1,2,0编号的DN上分布的数据量分别为7条,2条,1条。

    1
    2
    3
    4
    5
    6
    7
    select table_skewness('tx','a');
     table_skewness 
    ----------------
     (1,7,70.000%)
     (2,2,20.000%)
     (0,1,10.000%)
    (3 rows)
    
  • table_data_skewness(data_row record, locatorType "char")

    描述:计算指定表中列拼接出的record,对应的桶分布索引。

    参数:data_row表示指定表中列拼接出的record,locatorType表示分布规则,当前建议指定'H',按hash分布计算。

    返回值类型:smallint

    示例:

    计算tx表中a列拼接的record,按照hash分布规则对应的桶分布索引。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    select a, table_data_skewness(row(a), 'H') from tx;
     a | table_data_skewness 
    ---+---------------------
     3 |                   0
     6 |                   2
     7 |                   2
     4 |                   1
     5 |                   1
    (5 rows)
    
  • table_distribution(schemaname text, tablename text)

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

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

    返回值类型:record

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

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

    参数:表示待查询表的表名或OID,表名可以有模式名限定。为regclass类型。

    返回值类型:record

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

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

    返回值类型:record

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

    描述:获取各表的插入、更新、删除以及脏页率信息。该函数针对视图PGXC_GET_STAT_ALL_TABLES进行了性能优化,可以快速筛选出脏页率大于dirty_percent,dead元组数大于n_tuples的表。

    返回值类型:setof record

    函数返回字段如下:

    名称

    类型

    描述

    relid

    oid

    表的OID

    relname

    name

    表名

    schemaname

    name

    表的模式名

    n_tup_ins

    bigint

    插入的元组条数

    n_tup_upd

    bigint

    更新的元组条数

    n_tup_del

    bigint

    删除的元组条数

    n_live_tup

    bigint

    live元组的条数

    n_dead_tup

    bigint

    dead元组的条数

    dirty_page_rate

    numeric(5,2)

    表的脏页率信息(%)

  • pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples, text schema)

    描述:获取各表的插入、更新、删除以及脏页率信息。该函数可以快速筛选出脏页率大于page_dirty_rate,dead元组数大于n_tuples,模式名是schema的表。

    返回值类型:setof record

    函数返回字段同上述函数pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples)。

  • plan_seed()

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

    返回值类型:int

  • pg_stat_get_env()

    描述:提供获取当前节点的环境变量信息。

    返回值类型:record

  • pg_stat_get_thread()

    描述:提供当前节点下所有线程的状态信息。

    返回值类型:record

  • pgxc_get_os_threads()

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

    返回值类型:record

  • pg_stat_get_sql_count()

    描述:提供当前节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数和响应时间的统计结果以及DDL、DML、DCL语句的计数结果。

    返回值类型:record

  • pgxc_get_sql_count()

    描述:提供当前集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数和响应时间的统计结果以及DDL、DML、DCL语句的计数结果。

    返回值类型:record

  • pgxc_get_workload_sql_count()

    描述:提供当前集群所有CN上所有Workload控制组内执行的SELECT/UPDATE/INSERT/DELETE语句的计数统计结果以及DDL、DML、DCL类型语句的计数统计结果。

    返回值类型:record

  • pgxc_get_workload_sql_elapse_time()

    描述:提供当前集群所有CN上所有Workload控制组内执行的SELECT/UPDATE/INSERT/DELETE语句的响应时间统计结果。

    返回值类型:record

  • get_instr_unique_sql()

    描述:提供当前节点中收集的Unique SQL的信息。如果是CN节点,将返回该CN上收集的Unique SQL的完整信息,即会收集其他CN和DN上对应Unique SQL的信息并进行汇总展示;如果是DN节点,将返回本DN节点上的Unique SQL信息。详见GS_INSTR_UNIQUE_SQL。

    返回值类型:record

  • reset_instr_unique_sql(cstring, cstring, INT8)

    描述:清理已收集的Unique SQL信息。输入参数含义如下:

    • GLOBAL/LOCAL:清理范围为所有节点或当前节点。
    • ALL/BY_USERID/BY_CNID/BY_GUC:ALL表示清理所有,BY_USERID/BY_CNID表示按照USERID或CNID进行清理,BY_GUC表示清理操作是由GUC参数instr_unique_sql_count设置值变小引起的。
    • 第三个参数值对应第二个参数设置,ALL/BY_GUC的情况下该值无意义。

    返回值类型:bool

  • pgxc_get_instr_unique_sql()

    描述:提供集群中所有CN上收集的Unique SQL的完整信息。该函数只能在CN上执行。

    返回值类型:record

  • get_instr_unique_sql_remote_cns()

    描述:提供集群中除正在执行此函数的CN之外的所有CN上收集的Unique SQL的完整信息。该函数只能在CN上执行。

    返回值类型:record

  • pgxc_get_node_env()

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

    返回值类型:record

  • gs_switch_relfilenode()

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

    返回值类型:int

  • copy_error_log_create()

    描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。

    返回值类型:boolean

    • 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表1
    • 在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。
    • 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此集群上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表(GaussDB(DWS)默认为off)。
    • 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。
    • 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。
    表1 错误表public.pgxc_copy_error_log信息

    列名称

    类型

    描述

    relname

    varchar

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

    begintime

    timestamp with time zone

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

    filename

    character varying

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

    rownum

    bigint

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

    rawrecord

    text

    在数据源文件中,出现数据格式错误的原始记录。为了防止字段长度过大,限制字段的长度不超过1024 byte。

    detail

    text

    详细错误信息。

  • pv_compute_pool_workload()

    描述:提供云上加速集群当前负载信息。

    返回值类型:record

  • pg_stat_get_status(tid, num_node_display)

    描述:查询当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,其返回结果的详细含义参见PG_THREAD_WAIT_STATUS视图。输入参数含义如下:

    • tid:表示线程ID,bigint类型。如果为NULL,则返回所有工作线程和辅助线程的等待情况;否则只返回指定ID线程的等待情况。
    • num_node_display:integer类型。对于等待状态为“wait node”的记录,指定其wait_status列中显示的被等待节点的最大数量。
      • 如果为空或者小于等于0,则只显示一个被等待节点。
      • 如果大于20,则最多只显示20个节点。
      • 如果大于0且小于等于20,则显示数量为num_node_display和实际被等待节点数量的最小者。例如查询“SELECT * from pg_stat_get_status(NULL, 10)”,如果实际被等待节点数量大于10,则只随机显示其中10个节点名称,如果实际被等待节点数量小于等于10,则显示全部被等待节点名称。当实际被等待节点数量大于显示数量时,被显示的节点名称为随机挑选。

    返回值类型:record

  • pgxc_get_thread_wait_status(num_node_display)

    描述:查询集群各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态。其返回结果的详细含义参见PGXC_THREAD_WAIT_STATUS视图。输入参数num_node_display的类型和含义与上述函数pg_stat_get_status相同。

    返回值类型:record

  • pgxc_os_run_info()

    描述:查询集群中各节点上操作系统运行的状态信息。函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PV_OS_RUN_INFO”章节。

    返回值类型:record

  • get_instr_wait_event()

    描述:查询当前实例上各类等待状态和事件的统计信息。函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>GS_WAIT_EVENTS”。如果GUC参数enable_track_wait_event为off,则返回0行。

    返回值类型:record

  • pgxc_wait_events()

    描述:查询集群中各节点上各类等待状态和事件的统计信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PGXC_WAIT_EVENTS”视图。如果GUC参数enable_track_wait_event为off,则返回0行。

    返回值类型:record

  • pgxc_stat_bgwriter()

    描述:查询集群中各节点上后端写进程活动的统计信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PG_STAT_BGWRITER”视图。

    返回值类型:record

  • pgxc_stat_replication()

    描述:查询集群中各节点上日志同步的状态信息,如发起端发送日志位置,收端接收日志位置等,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PG_STAT_REPLICATION”视图。

    返回值类型:record

  • pgxc_replication_slots()

    描述:查询集群中各DN上复制的状态信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PG_REPLICATION_SLOTS”视图。

    返回值类型:record

  • pgxc_settings()

    描述:查询集群中各节点上运行时参数的相关信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PG_SETTINGS”视图。

    返回值类型:record

  • pgxc_instance_time()

    描述:查询集群中各节点的运行时间统计信息及各执行阶段所消耗时间,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PV_INSTANCE_TIME”视图。

    返回值类型:record

  • pg_stat_get_redo_stat()

    描述:查询当前节点上的XLOG重做统计信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PV_REDO_STAT”视图。

    返回值类型:record

  • pgxc_redo_stat()

    描述:查询集群中各节点上的XLOG重做统计信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>PV_REDO_STAT”视图。

    返回值类型:record

  • get_local_rel_iostat()

    描述:查询当前实例上磁盘读写的统计信息。函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>GS_REL_IOSTAT”视图。

    返回值类型:record

  • pgxc_rel_iostat()

    描述:查询集群中各节点上磁盘读写的统计信息,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>GS_REL_IOSTAT”视图。

    返回值类型:record

  • get_node_stat_reset_time()

    描述:返回当前实例统计信息被重置的时间。

    返回值类型:timestamptz

  • pgxc_node_stat_reset_time()

    描述:查询集群中各节点统计信息被重置的时间,函数返回结果信息详见《开发指南》中“系统表和系统视图>系统视图>GS_NODE_STAT_RESET_TIME”视图。

    返回值类型:record

    实例正常运行过程中,内存中的各类统计数值会逐渐累加,以下情况会导致内存中的统计数值被重置为0:
    • 实例重启或集群发生了切换;
    • 数据库Database被删除(drop);
    • 用户执行了重置操作,如执行pgstat_recv_resetcounter函数会将数据库中的统计计数器清零,执行reset_instr_unique_sql函数会将Unique SQL数据清零。

    如果发生了以上事件,GaussDB(DWS)会记录统计信息被重置的时间,可通过get_node_stat_reset_time函数查询。