华为云云数据库GaussDB其它函数_云淘科技

pgxc_pool_check()

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

返回值类型:Boolean

pgxc_pool_reload()

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

返回值类型:Boolean

reload_active_coordinator()

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

返回值类型:void

pgxc_lock_for_backup()

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

返回值类型:Boolean

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

pg_pool_validate(clear bool, node_name text)

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

返回值类型:record

pgxc_pool_connection_status()

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

返回值类型:boolean

pg_nodes_memory()

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

返回值类型:record

table_skewness(text)

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

参数:表示待查询表的表名,为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分布类型

返回值类型:smallint

示例:

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进行数据倾斜查询,建议在数据库中表数量(小于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,pg_log)
(1 row)

pg_catalog.plancache_clean()

描述:清理节点上无人使用的全局计划缓存。

返回值类型:bool

pg_stat_get_thread

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

返回值类型:record

pgxc_get_os_threads

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

返回值类型:record

pg_stat_get_sql_count

描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果,sysadmin和monitor admin用户可以查看所有用户的信息,普通用户只能查看本用户的统计信息。

返回值类型:record

pgxc_get_sql_count

描述:提供整个集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果。

返回值类型: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

gs_switch_relfilenode

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

返回值类型:int

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

pg_catalog.plancache_clean()

描述:清理当前节点上无人使用的全局计划缓存。

返回值类型:boolean

DBE_PERF.global_plancache_clean()

描述:清理所有节点上无人使用的全局计划缓存。

返回值类型:Boolean

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默认为off)。
此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。
若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。

表1 错误表public.pgxc_copy_error_log信息

列名称

类型

描述

relname

character varying

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

begintime

timestamp with time zone

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

filename

character varying

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

lineno

bigint

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

rawrecord

text

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

detail

text

详细错误信息。

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_active_session()

描述:提供所有节点保存在内存中的历史活跃session状态的采样记录。

返回值类型:record

dbe_perf.get_global_gs_asp(timestamp,timestamp)

描述:提供所有节点保存在系统表gs_asp中的历史活跃session状态的采样记录。

返回值类型:record

get_wait_event_info()

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

返回值类型:record

dbe_perf.get_datanode_active_session(text)

描述:提供从CN查询DN上保存在内存中的历史活跃session状态的采样记录。

返回值类型:record

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

dbe_perf.get_datanode_active_session_hist(text,timestamp,timestamp)

描述:提供从CN查询DN上保存在系统表gs_asp中的历史活跃session状态的采样记录。

返回值类型:record

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

generate_wdr_report(bigint, bigint, cstring, cstring,cstring)

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

返回值类型:text

表2 generate_wdr_report参数说明

参数

说明

取值范围

begin_snap_id

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

end_snap_id

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

report_type

指定生成report的类型。

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

report_scope

指定生成report的范围。

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

node_name

在“report_scope”指定为“node”时,需要把该参数指定为对应节点的名称。
在“report_scope”为“cluster”时,该参数可以省略,或指定为NULL。

node:GaussDB中的节点名称。
cluster:省略/空/NULL。

create_wdr_snapshot()

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

返回值类型:text

kill_snapshot()

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

返回值类型:void

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

表3 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

具体清理type对应的清理值。如果第二个参数为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/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过查询表PV_SESSION_MEMORY_DETAIL中的sessid字段获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即”)的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。

返回值类型:boolean

true:成功。
false:失败。

pg_shared_memctx_detail(MemoryContextName text)

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

返回值类型:boolean

true:成功。
false:失败。

local_bgwriter_stat()

描述:显示本实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息。

返回值类型:record

local_candidate_stat()

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

返回值类型:record

local_ckpt_stat()

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

返回值类型:record

local_double_write_stat()

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

返回值类型:record

表4 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_single_flush_dw_stat()

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

返回值类型:record

local_pagewriter_stat()

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

返回值类型:record

local_redo_stat()

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

返回值类型:record

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

local_recovery_status()

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

返回值类型:record

local_rto_status()

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

返回值类型:record

gs_wlm_node_recover(boolean isForce)

描述:动态负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)节点故障后做节点恢复操作。该函数只有管理员用户可以执行,属于集群管理模块调用的,不建议用户直接调用。

返回值类型:bool

gs_wlm_node_clean(cstring nodename)

描述:动态负载管理(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)节点故障后做数据清理操作。该函数只有管理员用户可以执行,属于集群管理模块调用的,不建议用户直接调用。

返回值类型:bool

gs_cgroup_map_ng_conf(group name)

描述:读取指定逻辑集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的cgroup配置文件。该函数只有sysadmin权限的用户可以执行。

返回值类型:record

pgxc_cgroup_map_ng_conf(group name)

描述:在所有节点上读取指定逻辑集群(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的cgroup配置文件。该函数只有sysadmin权限的用户可以执行。

返回值类型:bool

gs_wlm_switch_cgroup(sess_id int8, cgroup name)

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

返回值类型:record

comm_client_info()

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

返回值类型:setof record

pg_sync_cstore_delta(text)

描述:同步指定列存表的delta表表结构,使其与列存表主表一致。

返回值类型:bigint

pg_sync_cstore_delta()

描述:同步所有列存表的delta表表结构,使其与列存表主表一致。

返回值类型:bigint

pg_get_flush_lsn()

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

返回值类型:text

pg_get_sync_flush_lsn()

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

返回值类型:text

gs_create_log_tables()

描述:用于创建运行日志和性能日志(当前特性是实验室特性,使用时请联系华为工程师提供技术支持)的外表和视图。

示例:

gaussdb=# select gs_create_log_tables();
 gs_create_log_tables
----------------------

(1 row)

返回值类型:void

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

表5 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

表6 dbe_perf.get_global_full_sql_by_timestamp参数说明

参数

类型

描述

start_timestamp

timestamp with time zone

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

end_timestamp

timestamp with time zone

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

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

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

返回值类型:record

表7 dbe_perf.get_global_slow_sql_by_timestamp参数说明

参数

类型

描述

start_timestamp

timestamp with time zone

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

end_timestamp

timestamp with time zone

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

statement_detail_decode(detail text, format text, pretty boolean)

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

返回值类型:text

表8 statement_detail_decode参数说明

参数

类型

描述

detail

text

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

format

text

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

pretty

boolean

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

true表示通过“
”分隔事件。
false表示通过“,”分隔事件。

pgxc_get_csn(tid)

描述:返回给定的事务id对应的事务提交序号(CSN)。

返回值类型: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

pg_collation_for

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

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

返回值类型:text

pgxc_unlock_for_sp_database(name Name)

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

参数:数据库名

返回值类型:Boolean

pgxc_lock_for_sp_database(name Name)

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

参数:数据库名

返回值类型:Boolean

pgxc_unlock_for_transfer(name Name)

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

参数:数据库名

返回值类型:Boolean

pgxc_lock_for_transfer(name Name)

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

参数:数据库名

返回值类型:Boolean

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

表9 dynamic_func_control参数说明

参数

类型

描述

scope

text

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

function_name

text

功能的名称,当前仅支持’STMT’。

action

text

当function_name为’STMT’时,action仅支持TRACK/UNTRACK/LIST/CLEAN:

TRACK – 开始记录归一化SQL的全量SQL信息。
UNTRACK – 取消记录归一化SQL的全量SQL信息。
LIST – 列取当前TRACK的归一化SQL的信息。
CLEAN – 清理记录当前归一化SQL的信息。

params

text[]

当function_name为’STMT’时,对应不同的action时,对应的params设置如下:

TRACK – ‘{“归一化SQLID”, “L0/L1/L2”}’
UNTRACK – ‘{“归一化SQLID”}’
LIST – ‘{}’
CLEAN – ‘{}’

gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean)

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

返回值类型:text

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

表10 gs_parse_page_bypath参数说明

参数

类型

描述

path

text

对于普通表或段页式的普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394
对于段页式的hashbucket表,相对路径为:tablespace name/database oid/Segment Head的逻辑页号_b(bucketid)。例如:base/16603/16394_b1437
对于普通表的visibility map,相对路径为:tablespace name/database oid/表的vm文件。例如:base/16603/16394_vm。
对于clog文件,相对路径为:pg_clog目录下的clog文件。例如:000000000000。
对于csnlog文件,相对路径为:pg_csnlog目录下的csnlog文件。例如:000000000000。
表文件的相对路径可以通过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的信息。
对于BTree/UBTree索引,block 0为索引元页面。

relation_type

text

heap(astore表)。
uheap(ustore表)。
btree(BTree索引)。
ubtree(UBTree索引)。
segment(段页式)。
vm(astore普通表的visibility map)。
clog(事务状态日志commit log)。
csnlog(快照时间戳日志commit sequence number log)。

read_memory

boolean

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

正常使用示例:

# 解析BTree索引文件中所有页面的信息内容
gaussdb=# select gs_parse_page_bypath('base/16603/16394', -1, 'btree', false);
                        gs_parse_page_bypath                        
--------------------------------------------------------------------
 /data_dir/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                          
-----------------------------------------------------------------------
 /data_dir/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                        
--------------------------------------------------------------------
 /data_dir/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位置。

参数:LSN起始位置,LSN结束位置

返回值类型:text

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

gs_xlogdump_xid(c_xid xid)

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

参数:事务ID

返回值类型:text

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

gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text)

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

返回值类型:text

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

表11 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

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

表12 gs_xlogdump_parsepage_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(段页式)

read_memory

boolean

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

gs_index_recycle_queue(Oid oid, int type, uint32 blkno)

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

返回值类型:record

表13 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

表14 gs_stat_wal_entrytable参数说明

参数类型

参数名

类型

描述

输入参数

idx

int64

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

输出参数

idx

uint64

记录对应数组中的下标

输出参数

endlsn

uint64

记录的LSN标签

输出参数

lrc

int32

记录对应的LRC

输出参数

status

uint32

标识当前entry对应的xlog是否已经完全拷贝到wal buffer中

0:非COPIED
1: COPIED

gs_walwriter_flush_position()

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

返回值类型:record

表15 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

表16 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_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_sucess

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_sencond | nblk_sencond_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/pg_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)

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)

父主题: 系统管理函数

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家