统计信息函数
统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器线程号为参数,其范围从1到当前活跃服务器的数目。
- pg_stat_get_db_conflict_tablespace(oid)
描述:由于恢复与数据库中删除的表空间发生冲突而取消的查询数。
返回值类型:bigint
- pg_stat_get_db_conflict_truncate(oid)
描述:由于与数据库中在回放的truncate操作发生冲突而取消的查询数。
返回值类型:bigint
- pg_stat_get_db_conflict_force_recycle(oid)
返回值类型:bigint
- pg_stat_get_db_conflict_standby_query_timeout(oid)
描述:由于超过极致RTO备机读设置的查询时间上限而取消的查询数。
返回值类型:bigint
- pg_stat_get_db_conflict_bufferpin(oid)
返回值类型:bigint
- pg_stat_get_db_conflict_snapshot(oid)
返回值类型:bigint
- pg_stat_get_db_conflict_startup_deadlock(oid)
返回值类型:bigint
- pg_stat_get_db_conflict_all(oid)
描述:由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。
返回值类型:bigint
- pg_control_group_config()
描述:在当前节点上打印cgroup配置。该函数需要SYSADMIN权限的用户才能够执行。
返回值类型:record
- pg_stat_get_db_stat_reset_time(oid)
描述:上次重置数据库统计信息的时间。查询首次连接的数据库将返回数据库连接时的系统时间。当在数据库上调用pg_stat_reset以及针对其中的任何表或索引执行pg_stat_reset_single_table_counters时,重置时间都会更新。
返回值类型:timestamptz
- pg_stat_get_function_total_time(oid)
描述:该函数花费的总挂钟时间,以微秒为单位。包括花费在此函数调用其它函数上的时间。
返回值类型:bigint
- pg_stat_get_xact_tuples_returned(oid)
描述:当前事务中参数为表时通过顺序扫描读取的行数,或参数为索引时返回的索引条目数。
返回值类型:bigint
- pg_stat_get_xact_numscans(oid)
描述:当前事务中参数为表时执行的顺序扫描次数,或参数为索引时执行的索引扫描次数。
返回值类型:bigint
- pg_stat_get_xact_blocks_fetched(oid)
返回值类型:bigint
- pg_stat_get_xact_blocks_hit(oid)
返回值类型:bigint
- pg_stat_get_xact_function_calls(oid)
返回值类型:bigint
- pg_stat_get_xact_function_self_time(oid)
描述:在当前事务中仅花费在此函数上的时间。不包括花费在此函数内部调用其它函数上的时间。
返回值类型:bigint
- pg_stat_get_xact_function_total_time(oid)
描述:当前事务中该函数所花费的总挂钟时间(以微秒为单位)。包括花费在此函数内部调用其它函数上的时间。
返回值类型:bigint
- pg_lock_status()
返回值类型:返回字段可参考PG_LOCKS视图返回字段,该视图是通过查询本函数得到的结果。
- bucket_lock_status()
描述:查询打开事务所持有的bucket锁信息,所有用户均可执行该函数。
返回值类型:返回字段可参考GS_BUCKET_LOCKS视图返回字段中除node_name之外的字段。
- gs_bucket_lock_status()
描述:查询所有节点中的打开事务所持有的bucket锁信息,所有用户均可执行该函数。
返回值类型:返回字段可参考GS_BUCKET_LOCKS视图返回字段,该视图是通过查询本函数得到的结果。
- gs_lwlock_status()
描述:查询数据库系统内所有轻量级锁信息,包括等锁和持锁信息,所有用户均可执行该函数。
返回值类型:setof record
- pg_stat_get_wal_senders()
返回值类型:setof record
返回字段说明如下:
表1 返回字段说明 字段名称
字段类型
字段说明
pid
bigint
walsender的线程号。
sender_pid
integer
walsender的pid相对的轻量级线程号。
local_role
text
主节点类型。
peer_role
text
备节点类型。
peer_state
text
备节点状态。
state
text
walsender状态。
catchup_start
timestamp with time zone
catchup启动时间。
catchup_end
timestamp with time zone
catchup结束时间。
sender_sent_location
text
主节点发送位置。
sender_write_location
text
主节点落盘位置。
sender_flush_location
text
主节点flush磁盘位置。
sender_replay_location
text
主节点redo位置。
receiver_received_location
text
备节点接收位置。
receiver_write_location
text
备节点落盘位置。
receiver_flush_location
text
备节点flush磁盘位置。
receiver_replay_location
text
备节点redo磁盘位置。
sync_percent
text
同步百分比。
sync_state
text
同步状态。
sync_group
text
同步复制的所属分组。
sync_priority
text
同步复制的优先级。
sync_most_available
text
最大可用模式设置。
channel
text
walsender信道信息。
- get_paxos_replication_info()
返回值类型:setof record
返回字段说明如下:
表2 返回字段说明 字段名称
字段类型
字段说明
paxos_write_location
text
已经写入DCF的Xlog位置。
paxos_commit_location
text
已经在DCF中达成一致的Xlog位置。
local_write_location
text
节点的落盘位置。
local_flush_location
text
节点的flush磁盘位置。
local_replay_location
text
节点的redo磁盘位置。
dcf_replication_info
text
节点的DCF模块信息。字符串为JSON格式,其中各字段含义分别如下:
role:表示当前节点角色,角色可分为LEADER、FOLLOWER、LOGGER、PASSIVE、UNKNOW。
term:选举任期。
run_mode:DCF运行模式,当前0表示自动选举模式,1表示手动选举模式,2表示关闭选举模式。
work_mode:DCF工作模式。
hb_interval:DCF节点间心跳间隔时间,单位ms。
elc_timeout:DCF选举超时时间,单位ms。
applied_index:被应用到状态机的日志位置。
commit_index:已被大多数DCF节点保存的日志位置,此commit_index之前日志均已持久化。
first_index:DCF节点保存的首条日志位置,此位置会随着DN调用dcf_truncate而向后推进,之前的日志会被清理。
last_index:DCF节点保存的最后一条日志位置,此日志位置包含DCF节点存储在内存里但是没有持久化的日志。
cluster_min_apply_idx:集群最小已应用的日志位置。
leader_id:leader节点ID。
leader_ip:leader节点IP。
leader_port:leader节点端口,DCF内部使用 。
nodes:本集群其他节点信息,包含节点的id、ip、port、role等关键信息。
示例:
gaussdb=# select * from get_paxos_replication_info(); paxos_write_location | paxos_commit_location | local_write_location | local_flush_location | local_replay_location | dcf_replication_info ----------------------+-----------------------+----------------------+----------------------+-----------------------+--------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------- 38F/CD54F690 | 38F/CD54F690 | 38F/CD54F690 | 38F/CD546CF8 | 38F/CD546CF8 | {"stream_id":1,"local_node_id":1,"role":"LEADER"," term":1215,"run_mode":1,"work_mode":0,"stg_mode":1,"hb_interval":1000,"elc_timeout":3000,"auto_elc_pri_en":1,"elc_switch_thd":0,"group":0,"priority":3898464883456,"lead er_group":0,"is_in_major":1,"applied_index":362830766,"commit_index":362830766,"first_index":355330879,"last_index":3916160068856,"last_term":1215,"dcf_last_index":3628 30766,"dcf_last_disk":362830754,"cluster_min_apply_idx":362830764,"cluster_mode":"primary_cluster","leader_id":1,"leader_ip":"*.*.*.*","leader_port":*,"nodes" :[{"node_id":1,"ip":"*.*.*.*","port":*,"role":"LEADER","next_index":362830766,"match_index":362830765,"apply_index":362830765},{"node_id":2,"ip":"*.*.*.* 4","port":*,"role":"FOLLOWER","next_index":362830767,"match_index":362830766,"apply_index":362830765},{"node_id":3,"ip":"*.*.*.*","port":*,"role":"LOGGER" ,"next_index":362830767,"match_index":362830766,"apply_index":362830764}]} (1 row) - pgxc_get_senders_catchup_time()
描述:在CN实例查询集群中是否存在处于日志追赶状态的备DN,以及追赶状态详情。
返回值类型:setof record
- pg_stat_get_stream_replications()
返回值类型:setof record
返回值说明如下表所示。
表3 返回值说明 返回参数
返回参数类型
返回参数说明
local_role
text
本地角色。
static_connections
integer
连接统计。
db_state
text
数据库状态。
detail_information
text
详细信息。
- pg_stat_get_db_numbackends(oid)
返回值类型:integer
- pg_stat_get_db_xact_commit(oid)
返回值类型:bigint
- pg_stat_get_db_xact_rollback(oid)
返回值类型:bigint
- pg_stat_get_db_blocks_fetched(oid)
返回值类型:bigint
- pg_stat_get_db_blocks_hit(oid)
返回值类型:bigint
- pg_stat_get_db_tuples_returned(oid)
返回值类型:bigint
- pg_stat_get_db_tuples_fetched(oid)
返回值类型:bigint
- pg_stat_get_db_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_db_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_db_blk_read_time(oid)
返回值类型:double
- pg_stat_get_db_blk_write_time(oid)
返回值类型:double
- pg_stat_get_db_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_db_conflict_lock(oid)
返回值类型:bigint
- pg_stat_get_db_deadlocks(oid)
返回值类型:bigint
- pg_stat_get_numscans(oid)
描述:如果参数是一个表,则顺序扫描读取的次数。如果参数是一个索引,则返回索引行的扫描次数。
返回值类型:bigint
- pg_stat_get_role_name(oid)
描述:根据用户oid获取用户名。仅SYSADMIN和MONADMIN用户可以访问。
返回值类型:text
示例:
gaussdb=# SELECT pg_stat_get_role_name(10); pg_stat_get_role_name ----------------------- aabbcc (1 row) - pg_stat_get_tuples_returned(oid)
描述:如果参数是一个表,则顺序扫描读取的活跃行数目。如果参数是一个索引,则返回的活跃索引行的数目。
返回值类型:bigint
- pg_stat_get_tuples_fetched(oid)
描述:如果参数是一个表,则位图扫描抓取的行数目。如果参数是一个索引,则用简单索引扫描在原表中抓取的行数目。
返回值类型:bigint
- pg_stat_get_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_tuples_changed(oid)
描述:该表上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint
- pg_stat_get_tuples_hot_updated(oid)
返回值类型:bigint
- pg_stat_get_live_tuples(oid)
返回值类型:bigint
- pg_stat_get_dead_tuples(oid)
返回值类型:bigint
- pg_stat_get_blocks_fetched(oid)
返回值类型:bigint
- pg_stat_get_blocks_hit(oid)
返回值类型:bigint
- pg_stat_get_xact_tuples_fetched(oid)
返回值类型:bigint
- pg_stat_get_xact_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_xact_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_xact_tuples_hot_updated(oid)
返回值类型:bigint
- pg_stat_get_xact_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_last_vacuum_time(oid)
描述:用户在该表上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz
- pg_stat_get_last_autovacuum_time(oid)
描述:autovacuum守护线程在该表上最后一次启动清理的时间。
返回值类型:timestamptz
- pg_stat_get_vacuum_count(oid)
返回值类型:bigint
- pg_stat_get_autovacuum_count(oid)
返回值类型:bigint
- pg_stat_get_last_analyze_time(oid)
描述:用户在该表上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz
- pg_stat_get_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该表上最后一次启动分析的时间。
返回值类型:timestamptz
- pg_stat_get_analyze_count(oid)
返回值类型:bigint
- pg_stat_get_autoanalyze_count(oid)
返回值类型:bigint
- gs_stat_get_all_tabentries()
描述:在GUC参数enable_gsstat_cache设置为on时,用户可使用gs_stat_get_all_tabentries()获取其他节点的PgStat统计信息。内部函数,不建议用户直接使用。
返回值类型:setof record
返回参数说明如表4所示。
表4 返回参数说明 返回参数
返回参数类型
返回参数说明
node_name
name
节点的名称(pgxc_node中的node_name)。
nspname
name
Schema名称。
relname
name
表、索引名称。
tuples_returned
bigint
如果是表,则返回顺序扫描读取的行数目。如果是索引,则返回的索引行的数目。
tuples_fetched
bigint
如果是表,则用位图扫描抓取的行数目。如果是索引,则用简单索引扫描抓取的行数目。
tuples_inserted
bigint
插入表中的行的数量。
tuples_updated
bigint
在表中已更新行的数量。
tuples_deleted
bigint
从表中删除行的数量。
tuples_hot_updated
bigint
热更新的行数表。
n_live_tuples
bigint
活行数表。
n_dead_tuples
bigint
死行数表。在Ustore表中仅代表不活跃行指针数量。
blocks_fetched
bigint
表或者索引的磁盘块抓取请求的数量。
blocks_hit
bigint
在缓冲区中找到的表或者索引的磁盘块请求数目。
numscans
bigint
如果是表,则返回顺序扫描读取的行数目。如果是索引,则返回索引行的数目。
autovac_vacuum_timestamp
timestamp with time zone
autovacuum守护进程在该表上最后一次启动清理的时间。
autovac_vacuum_count
bigint
autovacuum守护进程在该表上启动清理的次数。
autovac_analyze_timestamp
timestamp with time zone
autovacuum守护进程在该表上最后一次启动分析的时间。
autovac_analyze_count
bigint
autovacuum守护进程在该表上启动分析的次数。
state_change_timestamp
timestamp with time zone
返回DBE_PERF.stat_all_tables视图中对各表各项监控指标字段更新的时间。
index_stat_change_timestamp
timestamp with time zone
返回DBE_PERF.stat_all_indexes视图中对各表各项监控指标字段更新的时间。
state_io_change_timestamp
timestamp with time zone
返回DBE_PERF.statio_all_indexes, DBE_PERF.statio_all_tables视图中对各表各项监控指标字段更新的时间。
- pg_total_autovac_tuples(bool)
描述:返回total autovac相关的tuple记录,如nodename、nspname、relname以及各类tuple的IUD信息,入参为:是否查询relation信息。
返回值类型:setof record
返回参数说明如下。
表5 返回参数说明 返回参数
返回参数类型
返回参数说明
nodename
name
节点名称。
nspname
name
名称空间名称。
relname
name
表、索引、视图等对象名称。
partname
name
分区名称。
n_dead_tuples
bigint
表分区内的死行数。在Ustore表中仅代表不活跃行指针数量。
n_live_tuples
bigint
表分区内的活行数。
changes_since_analyze
bigint
analyze产生改变的数量。
- pg_total_gsi_autovac_tuples(bool)
描述:返回total autovac相关的tuple记录,如nodename、nspname、relname以及GSI自上次analyze之后发生变化的记录数,入参为:是否查询relation信息。该函数用于辅助autovacuum全局二级索引,不建议用户使用。
返回值类型:setof record
- pg_autovac_status(oid)
描述:返回和autovac状态相关的参数信息,如nodename、nspname、relname、analyze、vacuum设置,analyze/vacuum阈值,analyze/vacuum tuple数等。仅SYSADMIN可以使用该函数。
返回值类型:setof record
返回值参数说明如下。
表6 返回值参数说明 返回参数
返回参数类型
返回参数说明
nspname
text
名称空间名称。
relname
text
表、索引、视图等对象名称。
nodename
text
节点名称。
doanalyze
Boolean
是否执行analyze。
anltuples
bigint
analyze tuple数量。
anlthresh
bigint
analyze阈值。
dovacuum
Boolean
是否执行vacuum。
vactuples
bigint
vacuum tuple数量。
vacthresh
bigint
vacuum阈值。
- pg_autovac_timeout(oid)
描述:返回某个表做autovac连续超时的次数,表信息非法或node信息异常返回NULL。
返回值类型:bigint
- pg_autovac_coordinator(oid)
描述:返回对某个表做autovac的coordinator名称,表信息非法或node信息异常返回NULL。
返回值类型:text
- pg_stat_get_last_data_changed_time(oid)
描述:对于在表上的修改insert/update/delete/truncate和在表的分区(partition/subpartition)上的修改exchange/truncate/drop,在该表上最后一次操作的时间,PG_STAT_ALL_TABLES视图last_data_changed列的数据是通过该函数求值,在表数量很大的场景中,通过视图获取表数据最后修改时间的性能较差,建议直接使用该函数获取表数据的最后修改时间。入参是表的oid。
返回值类型:timestamptz
- pg_stat_set_last_data_changed_time(oid)
描述:手动设置该表上最后一次insert/update/delete, exchange/truncate/drop partition操作的时间。
返回值类型:void
- pg_stat_get_last_updated(oid, text)
描述:返回DBE_PERF.stat_all_tables, DBE_PERF.stat_all_indexes, DBE_PERF.statio_all_indexes, DBE_PERF.statio_all_tables视图中对各表各项监控指标字段更新的时间。入参1为表的oid,入参2为text类型,取值为"stat_table", "stat_index", "stat_io"。
返回值类型:timestamptz
- pg_backend_pid()
返回值类型:integer
- pg_stat_get_activity(integer)
描述:返回一个关于带有特殊PID的后台线程的记录信息,当参数为NULL时,则返回每个活动的后台线程的记录。返回结果不包含connection_info列。初始用户、系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
示例:
gaussdb=# SELECT pg_backend_pid(); pg_backend_pid ----------------- 139881386280704 (1 row) -- 查询结果依赖于上方的返回值。 gaussdb=# SELECT * FROM pg_stat_get_activity(139881386280704); datid | pid | sessionid | usesysid | application_name | state | query | waiting | xact_start | query_start | backend_start | state_change | client_addr | client_hostname | client_port | enqueue | query_id | srespool | global_sessionid | unique_sql_id | trace_id -------+-----------------+-----------+----------+------------------+--------+------------------------------------------------------+---------+-------------------------------+-------------------------------+----- --------------------------+------------------------------+-------------+-----------------+-------------+---------+-------------------+--------------+------------------+---------------+---------- 16545 | 139881386280704 | 69 | 10 | gsql | active | select * from pg_stat_get_activity(139881386280704); | f | 2022-01-18 19:43:05.167718+08 | 2022-01-18 19:43:05.167718+08 | 2022 -01-18 19:42:33.513507+08 | 2022-01-18 19:43:05.16773+08 | | | -1 | | 72620543991624410 | default_pool | 1938253334#69#0 | 3751941862 | (1 row)
返回值类型:setof record
返回参数说明如下。
表7 返回参数说明 返回参数
返回参数类型
返回参数说明
datid
oid
用户会话在后台连接到的数据库OID。
pid
bigint
后台线程ID。
sessionid
bigint
会话ID。
usesysid
oid
登录该后台的用户OID。
application_name
text
连接到该后台的应用名。
state
text
该后台当前总体状态。
query
text
该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。
waiting
Boolean
如果后台当前正等待锁则为true。
xact_start
timestamp with time zone
启动当前事务的时间,如果没有事务是活跃的,则为null。
如果当前查询是首个事务,则这列等同于query_start列。
query_start
timestamp with time zone
开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。
backend_start
timestamp with time zone
该过程开始的时间,即当客户端连接服务器时。
state_change
timestamp with time zone
上次状态改变的时间。
client_addr
inet
连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如autovacuum。
client_hostname
text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_port
integer
客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。
enqueue
text
该字段暂不支持。
query_id
bigint
查询语句的ID。
srespool
name
资源池名字。
global_sessionid
text
全局会话id。
unique_sql_id
bigint
语句的unique sql id。
trace_id
text
驱动传入的trace id,与应用的一次请求相关联。
- pg_stat_get_activity_with_conninfo(integer)
描述:返回一个关于带有特殊PID的后台线程的记录信息,当参数为NULL时,则返回每个活动的后台线程的记录。初始用户、系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
返回值类型:setof record
返回值说明如下。
返回值
返回值类型
返回值说明
datid
oid
用户会话在后台连接到的数据库OID。
pid
bigint
后台线程ID。
sessionid
bigint
会话ID。
usesysid
oid
登录该后台的用户OID。
application_name
text
连接到该后台的应用名。
state
text
该后台当前总体状态。
query
text
该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。
waiting
Boolean
如果后台当前正等待锁则为true。
xact_start
timestamp with time zone
启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。
query_start
timestamp with time zone
开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。
backend_start
timestamp with time zone
该过程开始的时间,即当客户端连接服务器时。
state_change
timestamp with time zone
上次状态改变的时间。
client_addr
inet
连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如autovacuum。
client_hostname
text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_port
integer
客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。
enqueue
text
该字段暂不支持。
query_id
bigint
查询语句的ID。
connection_info
text
json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、线程属主用户等信息。
srespool
name
资源池名字。
global_sessionid
text
全局会话ID。
unique_sql_id
bigint
语句的unique sql id。
trace_id
text
驱动传入的trace id,与应用的一次请求相关联。
top_xid
xid
事务的顶层事务ID。
current_xid
xid
事务的当前事务ID。
xlog_quantity
bigint
事务当前使用的Xlog量,单位为字节。
control_status
text
当进行异常SQL CPU资源管控时为under_cpu_throttle,否则为normal。
- gs_get_explain(integer)
描述:返回一个关于指定PID的后台线程的运行态计划,PID不能为空。该功能生效的必要条件是GUC参数track_activities为on,支持语句的范围为可以explain且其计划不包含STREAM算子的SQL。详细说明如下:
- 若GUC参数plan_collect_thresh=-1,则该函数的返回结果一直为空。
- 若GUC参数plan_collect_thresh=0,若当前SQL执行时间大于等于GUC参数log_min_duration_statement指定值,且计划中所有算子处理的tuple数量和大于等于10000时,开始收集运行态计划;且后续每当所有算子处理tuple数量的和的增量超过10000时,进行一次收集。
- 若GUC参数plan_collect_thresh>0,会按照该参数指定的阈值进行增量收集运行态计划。
- 另外,该函数只能看到在CN生成的计划,若查看在DN生成的计划,需要参考函数gs_get_dn_explain。
返回值类型:text,具体各个字段的类型和含义如下:
返回值
返回值类型
返回值说明
运行态计划字符串
text
其中计划字符串中的A-rows是算子实时返回行数。
- gs_get_dn_explain(text, bigint)
描述:返回一个关于指定node name(来自pgxc_node系统表的node_name字段)和global session id的DN的后台线程的运行态计划,global session id不能为空。该功能生效的必要条件是GUC参数track_activities为on,支持语句的范围为可以explain且其计划不包含STREAM算子的SQL。详细说明如下:
- 同函数gs_get_explain,其中global session id是由pg_stat_activity字段global_sessionid计算而来。global_sessionid格式如下:${number1}:${number2}#{number3}。需要注意的是number1为有符号数,当number1为正数时,如global_sessionid样例为1938253334:1#0,那么gs_get_dn_explain函数的参数值应为${number2}*10000000000+${number1};当number1为负数时,需要将其转换为32位无符号数,如global_sessionid样例为-1736975100:1#0,那么gs_get_dn_explain函数的参数值应为${number2}*10000000000+(${number1}+4294967296)。
- 另外该函数需要ADMIN或MONADMIN权限才可执行。
返回值类型:text,具体各个字段的类型和含义如下:返回值
返回值类型
返回值说明
运行态计划字符串
text
其中计划字符串中的A-rows是算子实时返回行数。
- pg_stat_get_activity_ng(integer)
描述:返回一个关于带有特殊PID的活跃后台线程记录信息,当参数为NULL时,则返回每个活跃的后台线程的记录。系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
返回值类型:setof record
函数返回字段说明如下:
名称
类型
描述
datid
oid
数据库oid。
pid
bigint
后端线程的ID。
sessionid
bigint
会话的id。
node_group
text
数据所属用户对应的node group。
- pg_stat_get_function_calls(oid)
返回值类型:bigint
- pg_stat_get_function_self_time(oid)
描述:只有在此函数所花费的时间。此函数嵌套调用其它函数所花费的时间被排除在外。
返回值类型:bigint
- pg_stat_get_backend_idset()
描述:设置当前活动的服务器线程数(从1到活动服务器线程的数量)。
返回值类型:setofinteger
- pg_stat_get_backend_pid(integer)
返回值类型:bigint
- pg_stat_get_backend_dbid(integer)
返回值类型:oid
- pg_stat_get_backend_userid(integer)
返回值类型:oid
- pg_stat_get_backend_activity(integer)
描述:给定服务器线程的当前活动查询,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:text
- pg_stat_get_backend_waiting(integer)
描述:如果给定服务器线程在等待某个锁,并且调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才返回真。
返回值类型:Boolean
- pg_stat_get_backend_activity_start(integer)
描述:给定服务器线程当前正在执行的查询的起始时间,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone
- pg_stat_get_backend_xact_start(integer)
描述:给定服务器线程当前正在执行的事务的开始时间,但只有当前用户是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone
- pg_stat_get_backend_start(integer)
描述:给定服务器线程启动的时间,如果当前用户不是系统管理员或被查询的后端的用户,则返回NULL。
返回值类型:timestampwithtimezone
- pg_stat_get_backend_client_addr(integer)
描述:连接到给定客户端后端的IP地址。如果是通过Unix域套接字连接的则返回NULL;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:inet
- pg_stat_get_backend_client_port(integer)
描述:连接到给定客户端后端的TCP端口。如果是通过Unix域套接字连接的则返回-1;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:integer
- pg_stat_get_bgwriter_timed_checkpoints()
描述:后台写线程开启定时检查点的时间(因为checkpoint_timeout时间已经过期了)。
返回值类型:bigint
- pg_stat_get_bgwriter_requested_checkpoints()
描述:后台写线程开启基于后端请求的检查点的时间,因为已经超过了checkpoint_segments或因为已经执行了CHECKPOINT。
返回值类型:bigint
- pg_stat_get_bgwriter_buf_written_checkpoints()
返回值类型:bigint
- pg_stat_get_bgwriter_buf_written_clean()
返回值类型:bigint
- pg_stat_get_bgwriter_maxwritten_clean()
描述:后台写线程停止清理扫描的时间,因为已经写入了更多的缓冲区(相比bgwriter_lru_maxpages参数声明的缓冲区数)。
返回值类型:bigint
- pg_stat_get_buf_written_backend()
描述:后端线程写入的缓冲区数,因为它们需要分配一个新的缓冲区。
返回值类型:bigint
- pg_stat_get_buf_alloc()
返回值类型:bigint
- pg_stat_clear_snapshot()
描述:清理当前的统计快照。该函数仅SYSADMIN和MONADMIN可以执行。
返回值类型:void
- pg_stat_reset()
描述:为当前数据库重置统计计数器为0(需要系统管理员权限)。
返回值类型:void
- gs_stat_reset()
描述:将各节点上的为当前数据库重置统计计数器为0(需要系统管理员权限)。
返回值类型:void
- pg_stat_reset_shared(text)
描述:重置shared cluster每个节点当前数据统计计数器为0(需要系统管理员权限)。
返回值类型:void
- pg_stat_reset_single_table_counters(oid)
描述:为当前数据库中的一个表或索引重置统计为0(需要系统管理员权限)。
返回值类型:void
- pg_stat_reset_single_function_counters(oid)
描述:为当前数据库中的一个函数重置统计为0(需要系统管理员权限)。
返回值类型:void
- pgxc_fenced_udf_process(integer)
描述:查看UDF Master和Work线程数,仅SYSADMIN和MONADMIN用户有权限执行。入参为1时查看master线程数,入参为2时查看worker线程数,入参为3时终止所有worker线程。
返回值类型:text
- fenced_udf_process(integer)
描述:查看本地UDF Master和Work进程数。仅SYSADMIN和MONADMIN用户有权限终止所有worker进程。入参为1时查看master进程数,入参为2时查看worker进程数,入参为3时终止所有worker进程。
返回值类型:text
- total_cpu()
返回值类型:bigint
- total_memory()
返回值类型:bigint
- pgxc_terminate_all_fenced_udf_process()
描述:Kill所有的UDF Work线程,仅SYSADMIN和MONADMIN用户有权限执行。
返回值类型:boolean
- gs_get_nodegroup_tablecount(name)
返回值类型:integer
- pgxc_max_datanode_size(name)
描述:得到一个node_group的所有DN节点中数据库文件占用磁盘空间的最大值,单位为字节。
返回值类型:bigint
- gs_check_tables_distribution()
描述: 检查当前系统中用户表的分布是否存在不一致,如果返回空记录,表示不存在不一致。该函数应该在非扩缩容重分布时调用。
返回值类型:record
- pg_stat_bad_block()
返回值类型:record
- pgxc_stat_bad_block()
描述:获取集群所有节点自启动后,读取出现Page的损坏信息。
返回值类型:record
- pg_stat_bad_block_clear()
描述:清理节点记录的读取出现的Page损坏信息(需要系统管理员权限)。
返回值类型:void
- pgxc_stat_bad_block_clear
描述:清理集群所有节点记录的读取出现的Page损坏信息(需要系统管理员权限)。
返回值类型:void
- pgxc_log_comm_status(void)
描述:当使用sctp(由于规格变更,当前版本已经不再支持本特性,请不要使用)通信模式时,PGXC系统视图将datanode的通信层状态输出到各个日志文件中。
返回值类型:void
- gs_respool_exception_info(pool text)
返回值类型:record
- gs_control_group_info(pool text)
描述:查看资源池关联的控制组信息。该函数需要SYSADMIN权限的用户才能够执行。
返回值类型:record
返回信息如下:
属性
属性值
描述
name
class_a:workload_a1
class和workload名称。
class
class_a
Class控制组名称。
workload
workload_a1
Workload控制组名称。
type
DEFWD
控制组类型(Top、CLASS、BAKWD、DEFWD、TSWD)。
gid
87
控制组id。
shares
30
占父节点CPU资源的百分比。
limits
0
占父节点CPU核数的百分比。
rate
0
Timeshare中的分配比例。
cpucores
0-3
CPU核心数。
- gs_all_control_group_info()
描述:查看数据库内所有的控制组信息。函数返回信息具体的字段参考GS_ALL_CONTROL_GROUP_INFO字段。
返回值类型:record
- gs_get_control_group_info()
描述:查看所有的控制组信息。函数返回信息具体的字段参考GS_GET_CONTROL_GROUP_INFO。该函数需要SYSADMIN权限的用户才能够执行。
返回值类型:record
- gs_get_session_sql_memory()
描述:查看当前运行中语句的内存使用量。函数返回信息具体字段参考DBE_PERF.SESSION_SQL_MEMORY字段。
返回值类型:record
- gs_get_global_session_sql_memory()
描述:查看当前所有节点上运行中语句的内存使用量。函数返回信息具体字段参考DBE_PERF.GLOBAL_SESSION_SQL_MEMORY字段。
返回值类型:record
- gs_blackbox_dump()
描述:将系统中的黑匣子文件导出到“$GAUSSLOG/gs_blackbox/{nodename}”目录中。执行成功后返回在“$GAUSSLOG/gs_blackbox/{nodename}”中生成的黑匣子文件的名称。
返回值类型:text
- gs_blackbox_show(blackBoxFile cstring)
参数:
参数名称
参数说明
取值范围
blackBoxFile
指定需要解析的黑匣子文件,不指定参数表示当前进程采集的黑匣子文件。
字符串,或者不指定,指定有效的黑匣子文件名字,则读取“$GAUSSLOG/gs_blackbox/nodename”目录下对应名称的文件。仅支持名称,不支持路径,如果在“$GAUSSLOG/gs_blackbox/nodename”下不存在对应名称的文件,则报错返回。
返回值类型:setof record
返回值说明如下:
返回值
返回值类型
返回值说明
type
text
黑匣子字段类型。
tid
bigint
线程号。
sample_time
timestamp
采集时间。
value
text
黑匣子记录的内容。
查询结果举例如下:
type
tid
sample_time
value
ERRNUMBER
123456
2024-03-19 09:33:17.386
19460
BLACK_BOX_PLSQL_EXCEPTION
45678
2024-03-19 09:33:18.396
message: "Dropped rowtype entry for non-dropped column when make tuple."
funcname: basic_make_tuple_from_row
filename:pl_exec.cpp
context:xxxx
- gs_blackbox_list()
描述:列举当前实例黑匣子目录下的黑匣子文件。默认是“$GAUSSLOG/gs_blackbox/{nodename}”目录下。
返回值类型:setof record
返回值说明如下:
返回值
返回值类型
返回值说明
file
text
黑匣子文件名称。
- get_instr_workload_info(integer)
返回值类型:record
属性
类型
描述
user_oid
oid
用户ID。
commit_counter
bigint
前端事务commit数量。
rollback_counter
bigint
前端事务rollback数量。
resp_min
bigint
前端事务最小响应时间(单位:微秒)。
resp_max
bigint
前端事务最大响应时间(单位:微秒)。
resp_avg
bigint
前端事务平均响应时间(单位:微秒)。
resp_total
bigint
前端事务总响应时间(单位:微秒)。
bg_commit_counter
bigint
后端事务commit数量。
bg_rollback_counter
bigint
后端事务rollback数量。
bg_resp_min
bigint
后端事务最小响应时间(单位:微秒)。
bg_resp_max
bigint
后端事务最大响应时间(单位:微秒)。
bg_resp_avg
bigint
后端事务平均响应时间(单位:微秒)。
bg_resp_total
bigint
后端事务总响应时间(单位:微秒)。
dist_commit_counter
bigint
分布式事务commit数量。
dist_rollback_counter
bigint
分布式事务rollback数量。
dist_resp_min
bigint
分布式事务最小响应时间(单位:微秒)。
dist_resp_max
bigint
分布式事务最大响应时间(单位:微秒)。
dist_resp_avg
bigint
分布式事务平均响应时间(单位:微秒)。
dist_resp_total
bigint
分布式事务总响应时间(单位:微秒)。
dbid
oid
数据库标识。
只统计主事务信息,子事务信息不会被统计在内。
- pv_instance_time()
返回值类型:record
Stat_name属性
属性值
描述
DB_TIME
1062385
所有线程端到端的时间消耗总和(单位:微秒)。
CPU_TIME
311777
所有线程CPU时间消耗总和(单位:微秒)。
EXECUTION_TIME
380037
消耗在执行器上的时间总和(单位:微秒)。
PARSE_TIME
6033
消耗在SQL解析上的时间总和(单位:微秒)。
PLAN_TIME
173356
消耗在执行计划生成上的时间总和(单位:微秒)。
REWRITE_TIME
2274
消耗在查询重写上的时间总和(单位:微秒)。
PL_EXECUTION_TIME
0
消耗在plpgsql执行上的时间总和(单位:微秒)。
PL_COMPILATION_TIME
557
消耗在SQL编译上的时间总和(单位:微秒)。
NET_SEND_TIME
1673
消耗在网络发送上的时间总和(单位:微秒)。
DATA_IO_TIME
426622
消耗在数据读写上的时间总和(单位:微秒)。
- DBE_PERF.get_global_instance_time()
描述:提供整个集群各个关键阶段的时间消耗,仅在CN上支持查询。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- get_instr_unique_sql()
描述:获取当前节点的执行语句(归一化SQL)信息,具有SYSADMIN和MONADMIN权限的用户可查询全部信息,其他用户只能查询自己执行的语句的信息。函数返回信息具体字段参考DBE_PERF.STATEMENT字段。
返回值类型:record
- get_instr_wait_event(integer)
返回值类型:record
- get_instr_user_login()
描述:获取当前节点的用户登录或者退出登录次数信息,查询该函数必须具有SYSADMIN或者MONADMIN权限。
返回值类型:record
- get_instr_rt_percentile(integer)
描述:获取CCN节点SQL 响应时间P80、P95分布信息,集群统一的信息在CCN节点上,其他节点查询为0。
返回值类型:record
- get_node_stat_reset_time()
描述:获取当前节点的统计信息重置(重启,主备倒换,数据库删除)时间。
返回值类型:record
- gs_paxos_stat_replication()
返回值类型:setof record
返回字段说明如下:
字段名称
字段类型
字段说明
local_role
text
发送日志节点的角色。
peer_role
text
接收日志节点的角色。
local_dcf_role
text
发送日志节点的DCF角色。
peer_dcf_role
text
接收日志节点的DCF角色。
peer_state
text
接收日志节点的状态。
sender_write_location
text
发送日志节点写到Xlog buffer的位置。
sender_commit_location
text
发送日志节点DCF日志达成一致性点。
sender_flush_location
text
发送日志节点写到Xlog disk的位置。
sender_replay_location
text
发送日志节点replay的位置。
receiver_write_location
text
接收日志节点写到Xlog buffer的位置。
receiver_commit_location
text
接收日志节点DCF日志达成一致性点。
receiver_flush_location
text
接收日志节点写到Xlog disk的位置。
receiver_replay_location
text
接收日志节点重演Xlog的位置。
sync_percent
text
同步百分比。
dcf_run_mode
int4
DCF同步模式。
channel
text
信道信息。
- get_paxos_replication_info()
返回值类型:setof record
返回字段说明如下:
字段名称
字段类型
字段说明
paxos_write_location
text
已经写入DCF的Xlog位置。
paxos_commit_location
text
已经在DCF中达成一致的Xlog位置。
local_write_location
text
节点的落盘位置。
local_flush_location
text
节点的flush磁盘位置。
local_replay_location
text
节点的redo磁盘位置。
dcf_replication_info
text
节点的DCF模块信息。
-
描述:获取所有用户的相关信息,入参为int类型,可以为任意int值或NULL。该函数只有SYSADMIN权限的用户可以执行。
返回值类型:record
-
gs_wlm_readjust_user_space(oid)
描述:修正指定用户的存储空间使用情况。普通用户仅可修正自己的使用情况,管理员用户可以修正所有用户的使用情况。当参数oid传入0时,表示需要修正所有用户的使用情况。
返回值类型:record
-
gs_wlm_readjust_user_space_through_username(text name)
描述:修正指定用户的存储空间使用情况。该函数普通用户只能修正自己的使用情况,只有管理员用户可以修正所有用户的使用情况。当name指定为“0000”,表示需要修正所有用户的使用情况。
返回值类型:record
-
gs_wlm_readjust_user_space_with_reset_flag(text name, boolean isfirst)
描述:修正指定用户的存储空间使用情况。入参isfirst为true表示从0开始统计,否则从上一次结果继续统计。该函数普通用户只能修正自己的使用情况,只有管理员用户可以修正所有用户的使用情况。当name指定为“0000”,表示需要修正所有用户的使用情况。
返回值类型:record
- gs_io_wait_status()
返回值类型:setof record
名称
类型
描述
node_name
text
节点名称。
device_name
text
节点挂载的数据磁盘名称。
read_per_second
float
读完成每秒次数。
write_per_second
float
写完成每秒次数。
write_ratio
float
写磁盘占总的I/O使用的比例。
io_util
float
每秒I/O所占CPU总时间的百分比。
total_io_util
integer
过去三次I/O所占CPU总时间的等级(取值为0~6)。
tick_count
integer
更新磁盘IO信息的周期,固定为1秒,每次读取数据前都会被清零。
io_wait_list_len
integer
I/O请求线程等待队列的大小,若为0,则表示当前没有I/O被管控。
- gs_get_shared_memctx_detail(text)
描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件、行号和大小(同一文件同一行大小会做累加)。只支持查询通过PG_SHARED_MEMORY_DETAIL视图(请参见PG_SHARED_MEMORY_DETAIL)查询出来的内存上下文,入参为内存上下文名称(即PG_SHARED_MEMORY_DETAIL视图返回结果的contextname列)。查询该函数必须具有SYSADMIN权限或者MONADMIN权限。
返回值类型:setof record
名称
类型
描述
file
text
申请内存所在文件的文件名。
line
int8
申请内存所在文件的代码行号。
size
int8
申请的内存大小,同一文件同一行多次申请会做累加。
- gs_get_session_memctx_detail(text)
描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件、行号和大小(同一文件同一行大小会做累加)。仅在线程池模式下生效。且只支持查询通过PV_SESSION_MEMORY_CONTEXT视图(请参见PV_SESSION_MEMORY_CONTEXT)查询出来的内存上下文,入参为内存上下文名称(即PV_SESSION_MEMORY_CONTEXT视图返回结果的contextname列)。查询该函数必须具有SYSADMIN权限或者MONADMIN权限。
返回值类型:setof record
名称
类型
描述
file
text
申请内存所在文件的文件名。
line
int8
申请内存所在文件的代码行号。
size
int8
申请的内存大小,单位为byte,同一文件同一行多次申请会做累加。
该函数仅在线程池模式下生效。
- gs_get_thread_memctx_detail(tid,text)
描述:返回指定内存上下文上的内存申请的详细信息,包含每一处内存申请所在的文件、行号和大小(同一文件同一行大小会做累加)。只支持查询通过PV_THREAD_MEMORY_CONTEXT视图(请参见PV_THREAD_MEMORY_CONTEXT)查询出来的内存上下文,第一个入参为线程id(即PV_THREAD_MEMORY_CONTEXT视图返回数据的tid列),第二个参数为内存上下文名称(即PV_THREAD_MEMORY_CONTEXT视图返回数据的contextname列)。查询该函数必须具有SYSADMIN权限或者MONADMIN权限。
返回值类型:setof record
名称
类型
描述
file
text
申请内存所在文件的文件名。
line
int8
申请内存所在文件的代码行号。
size
int8
申请的内存大小,单位为byte,同一文件同一行多次申请会做累加。
- gs_get_history_memory_detail(cstring)
描述:查询历史内存快照信息,入参类型为cstring,取值为NULL或内存快照log文件名称:
- 若入参为NULL,则显示当前节点所有的内存快照log文件列表。
- 若入参为1查询到的列表中的内存快照log名称,则显示该log文件记录的内存快照详细信息。
- 若输入其他入参,则会提示入参错误或打开文件失败。
查询该函数必须具有SYSADMIN权限或者MONADMIN权限。
返回值类型:text
名称
类型
描述
memory_info
text
内存信息,如果函数入参为NULL,该列显示内存快照文件列表信息;入参为内存快照文件名称,则显示该文件的具体内容。
- gs_stat_get_hotkeys_info()
若GUC参数enable_hotkeys_collection = off, gs_stat_get_hotkeys_info、global_stat_get_hotkeys_info函数和global_stat_hotkeys_info视图无法正常查询。不影响gs_stat_clean_hotkeys和global_stat_clean_hotkeys清理接口的正常使用。
描述:获取当前节点上热点key的统计情况。
返回值类型:record
1 2 3 4 5 6
gaussdb=# SELECT * FROM gs_stat_get_hotkeys_info() order by count, hash_value; database_name | schema_name | table_name | key_value | hash_value | count ---------------+-------------+-------------------+-----------+------------+------- regression | public | hotkey_single_col | {22} | 1858004829 | 2 regression | public | hotkey_single_col | {11} | 2011968649 | 2 (2 rows)
名称
类型
描述
database_name
text
热点key所在database名称。
schema_name
text
热点key所在schema名称。
table_name
text
热点key所在table名称。
key_value
text
热点key的value。
hash_value
bigint
热点key在数据库中的哈希值,如果是List/Range分布表,该字段为0。
count
bigint
热点key被访问频次。
- gs_stat_clean_hotkeys()
- 热点key检测是针对大并发大流量场景设计的特性,访问几次的场景,查询清理会存在一定误差。
- 清理接口的设计上,只会清理LRU队列中的统计数据,而不会清理FIFO中的历史数据。因此如果清理完后,再访问一次FIFO中存在的历史键值,仍会被当做热点key处理。global_stat_clean_hotkeys同理。
描述:清理当前节点上热点key的统计信息。
返回值:boolean
1 2 3 4 5
gaussdb=# SELECT * FROM gs_stat_clean_hotkeys(); gs_stat_clean_hotkeys ----------------------- t (1 row)
- gs_stat_progress_vacuum(pid)
描述:用于查看当前VACUUM的进度。仅统计Astore和Ustore的页式表的VACUUM进度,不支持统计hashbucket和段页式。
返回值类型:record
表8 返回值参数说明 名称
类型
描述
pid
bigint
VACUUM线程的线程pid。
dataname
text
正在清理的数据库名称。
relid
oid
正在清理表的OID。
relname
text
正在清理的表名称。
phase
text
当前VACUUM所处的阶段。
detail
text
清理进度详情,包含总页面数、已扫描页面数、已清理页面数和已清理索引数。
表9 phase取值详细说明 phase
字段类型
说明
invalid
text
VACUUM正在启动,此时将获取表锁。
initialize
text
VACUUM正在准备开始扫描堆表,该阶段预计非常短暂。
vacuuming main part
text
VACUUM正在清理分区主表(通常为清理分区主表的GPI),可通过detail列信息查看清理进度。
scanning heap
text
VACUUM正在扫描堆表,必要时会对每个页面进行碎片整理或执行冻结操作,可通过detail列信息查看清理进度。
vacuuming indexes
text
VACUUM正在清理索引。若表存在索引,该阶段至少发生一次,并可能在按需对索引进行多次清理后,才会返回继续扫描堆表,可通过detail列信息查看清理进度。
vacuuming heap
text
VACUUM正在对堆表进行清理(区别于扫描堆表),并且在每次索引清理后执行。若堆表未完全扫描,将在此阶段后返回继续扫描,可通过detail列信息查看清理进度。
vacuuming part cache
text
VACUUM正在清理已缓存分区的死元组,可通过detail列信息查看清理进度。
cleaning up indexes
text
VACUUM正在清理索引,该阶段在堆表完全扫描且所有索引与堆表清理完成后执行。
truncating heap
text
VACUUM正在截断堆表的尾部空页,并将空页返回操作系统。
vacuuming urq
text
VACUUM正在回收Ustore表的索引的页面。
unknown phase
text
表示当前处于未在上述阶段中定义的未知状态,通常不会出现。
--设置guc参数: gaussdb=# SET vacuum_cost_delay=100; SET gaussdb=# CREATE TABLE t1 (a int, b int, c text) with (storage_type=astore) gaussdb-# partition by range(a) ( gaussdb(# partition p1 values less than(10000), gaussdb(# partition p2 values less than(20000), gaussdb(# partition p3 values less than(30000), gaussdb(# partition p4 values less than(40000), gaussdb(# partition p5 values less than(50000), gaussdb(# partition p6 values less than(60000), gaussdb(# partition p7 values less than(70000), gaussdb(# partition p8 values less than(80000), gaussdb(# partition p9 values less than(90000), gaussdb(# partition p10 values less than(maxvalue)); CREATE TABLE gaussdb=# CREATE INDEX idx11 on t1(a) global; CREATE INDEX gaussdb=# gaussdb=# CREATE INDEX idx12 on t1(b) global; CREATE INDEX gaussdb=# gaussdb=# CREATE INDEX idx13 on t1(c) global; CREATE INDEX gaussdb=# INSERT INTO t1 VALUES (generate_Series(1,100000), generate_series(1,3), 'abcde'); INSERT 0 300000 gaussdb=# DELETE t1; DELETE 300000 gaussdb=# VACUUM t1; VACUUM --新起一个会话连接当前节点,执行如下 gaussdb=# SELECT pid,query FROM pg_stat_activity where query = 'vacuum t1;'; pid | query -----------------+------------ 140242746078976 | vacuum t1; (1 row) gaussdb=# SELECT * FROM gs_stat_progress_vacuum(140242746078976); pid | dataname | relid | relname | phase | detail -----------------+----------+-------+---------+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------- 140242746078976 | postgres | 24962 | t1 | vacuuming heap | vacuum command "vacuum t1;" starts at 2025-09-09 17:20:00.659862-04, vacuumed 0/11 partitions, current part "p10", current phase already run 0s; heap: scanned 1 63/163 blocks, skipped 0 blocks, vacuumed 53/163 blocks; info: found 30003 dead tuples, already run 47s, delay 47s. (1 row) gaussdb=# DROP TABLE t1; - global_stat_get_hotkeys_info()
执行业务过程中,执行select * from global_stat_hotkeys_info minus select * from global_stat_get_hotkeys_info();因为存在时间差,可能出现不为0的情况。
描述:获取整个集群中热点key的统计情况。
返回值类型:record
1 2 3 4 5 6
gaussdb=# SELECT * FROM global_stat_get_hotkeys_info() order by count, hash_value; database_name | schema_name | table_name | key_value | hash_value | count ---------------+-------------+-------------------+-----------+------------+------- regression | public | hotkey_single_col | {22} | 1858004829 | 2 regression | public | hotkey_single_col | {11} | 2011968649 | 2 (2 rows)
- global_stat_clean_hotkeys()
返回值:boolean
1 2 3 4 5
gaussdb=# SELECT * FROM global_stat_clean_hotkeys(); global_stat_clean_hotkeys ----------------------- t (1 row)
- global_comm_get_recv_stream()
描述:获取所有DN节点上所有的通信库接收流状态。函数返回信息具体字段参考PG_COMM_RECV_STREAM字段。
返回值类型:record
- global_comm_get_send_stream()
描述:获取所有DN节点上所有的通信库发送流状态。函数返回信息具体字段参考PG_COMM_SEND_STREAM字段。
返回值类型:record
- global_comm_get_status()
描述:获取所有DN节点的通信库状态。函数返回信息具体字段参考PG_COMM_STATUS字段。
返回值类型:record
- global_comm_client_info()
描述:获取全局节点活跃的客户端连接信息。函数返回信息具体字段参考COMM_CLIENT_INFO字段。
返回类型:record
- global_comm_get_client_info()
描述:获取全局节点客户端连接信息。函数返回信息具体字段参考COMM_CLIENT_INFO字段。
返回类型:record
-
描述:显示当前集群下所有CN的当前用户查询相关的信息,该函数仅具有SYSADMIN或者MONADMIN权限的用户可以执行,普通用户可查看本用户的相关信息。505.0.0版本新增三列信息,灰度升级观察期中执行会报错,需使用PG_STAT_ACTIVITY视图(请参见PG_STAT_ACTIVITY)直连目标节点进行查询。
返回值类型:record
名称
类型
描述
coorname
text
当前集群下的CN名称。
datid
oid
用户会话在后台连接到的数据库OID。
datname
text
用户会话在后台连接到的数据库名称。
pid
bigint
后台线程ID。
sessionid
bigint
会话ID。
usesysid
oid
登录该后台的用户OID。
usename
text
登录该后台的用户名。
application_name
text
连接到该后台的应用名。
client_addr
inet
连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如autovacuum。
client_hostname
text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_port
integer
客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。
backend_start
timestamp with time zone
该过程开始的时间,即当客户端连接服务器的时间。
xact_start
timestamp with time zone
启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。
query_start
timestamp with time zone
开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。
state_change
timestamp with time zone
上次状态改变的时间。
waiting
boolean
如果后台当前正等待锁则为true。
enqueue
text
语句当前排队状态。可能值是:- waiting in queue:表示语句在排队中。
- 空:表示语句正在运行。
state
text
该后台当前总体状态。可能值是:- active:后台正在执行一个查询。
- idle:后台正在等待一个新的客户端命令。
- idle in transaction:后台在事务中,但事务中没有语句在执行。
- idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。
- fastpath function call:后台正在执行一个fast-path函数。
- disabled:如果后台禁用track_activities,则报告这个状态。
说明:只有系统管理员能查看到自己账户所对应的会话状态。其他账户的state信息为空。例如以judy用户连接数据库后,在PGXC_STAT_ACTIVITY视图中查看到的普通用户joe及初始用户omm的state信息为空:
SELECT datname, usename, usesysid, state,pid FROM pgxc_stat_activity;
datname | usename | usesysid | state | pid ----------+---------+----------+--------+----------------- testdb | omm | 10 | | 139968752121616 testdb | omm | 10 | | 139968903116560 db_tpcds | judy | 16398 | active | 139968391403280 testdb | omm | 10 | | 139968643069712 testdb | omm | 10 | | 139968680818448 testdb | joe | 16390 | | 139968563377936 (6 rows)
resource_pool
name
用户使用的资源池。
query_id
bigint
查询语句的ID。
query
text
该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。
global_sessionid
text
全局会话ID。
unique_sql_id
bigint
语句的unique sql id。
trace_id
text
驱动传入的trace id,与应用的一次请求相关联。
top_xid
xid
事务的顶层事务ID。
current_xid
xid
事务的当前事务ID。
xlog_quantity
bigint
事务当前使用的Xlog量,单位为字节。
-
pgxc_stat_activity_with_conninfo()
描述:显示当前集群下所有CN的当前用户查询相关的信息,返回值定义参考PGXC_STAT_ACTIVITY视图。该函数仅具有SYSADMIN或者MONADMIN权限的用户可以执行,普通用户只能查看本用户相关的信息。
返回值类型:record
- pgxc_stat_all_tables()
描述:显示各节点数据中每个表(包括TOAST表)的一行的统计信息,该函数仅具有SYSADMIN或者MONADMIN权限的用户可以执行。
返回值类型:record
- pgxc_get_thread_wait_status()
描述:查看集群各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态。
返回值类型:record
- pv_session_memory
描述:统计Session级别的内存使用情况,包含执行作业在数据节点上GaussDB线程和Stream线程分配的所有内存。
若GUC参数enable_memory_limit=off,该函数不能使用。
返回值类型:record
表10 返回值说明 名称
类型
描述
sessid
text
线程启动时间+线程标识。
init_mem
integer
当前正在执行作业进入执行器前已分配的内存,单位MB。
used_mem
integer
当前正在执行作业已分配的内存,单位MB。
peak_mem
integer
当前正在执行作业已分配的内存峰值,单位MB。
- DBE_PERF.gs_stat_activity_timeout(int)
描述:获取当前节点上执行时间超过超时阈值的查询作业信息。需要GUC参数track_activities设置为on才能正确返回结果。超时阈值的取值范围是0~2147483。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:setof record
名称
类型
描述
database
name
用户会话连接的数据库名称。
pid
bigint
后台线程ID。
sessionid
bigint
会话ID。
usesysid
oid
登录该后台的用户OID。
application_name
text
连接到该后台的应用名。
query
text
该后台正在执行的查询。
xact_start
timestamptz
启动当前事务的时间。
query_start
timestamptz
开始当前查询的时间。
query_id
bigint
查询语句ID。
- DBE_PERF.global_stat_activity_timeout(int)
描述:获取当前系统(所有CN)中执行时间超过超时阈值的查询作业信息。需要GUC参数track_activities设置为on才能正确返回结果。超时阈值的取值范围是0~2147483。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:setof record
名称
类型
描述
nodename
text
用户会话连接的coordinate node的名称。
database
name
用户会话连接的数据库名称。
pid
bigint
后台线程ID。
sessionid
bigint
会话ID。
usesysid
oid
登录该后台的用户OID。
application_name
text
连接到该后台的应用名。
query
text
该后台正在执行的查询。
xact_start
timestamptz
启动当前事务的时间。
query_start
timestamptz
开始当前查询的时间。
query_id
bigint
查询语句ID。
- DBE_PERF.get_global_active_session()
描述:显示所有CN节点和主DN节点上的ACTIVE SESSION PROFILE内存中的样本的汇总。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
- DBE_PERF.get_global_os_runtime()
描述:显示当前操作系统运行的状态信息,仅在CN上支持查询。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_os_threads()
描述:提供整个集群中所有正常节点下的线程状态信息,仅在CN上支持查询。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_os_threads()
描述:提供整个集群中所有正常节点下的线程状态信息,仅在CN上支持查询。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_workload_sql_count()
描述:提供整个集群中不同负载SELECT,UPDATE,INSERT,DELETE,DDL, DML,DCL计数信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_workload_sql_elapse_time()
描述:提供整个集群中不同负载SELECT、UPDATE、INSERT和DELETE,响应时间信息(TOTAL、AVG、MIN、MAX)。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_workload_transaction()
描述:获取集群内所有节点上的事务量信息,事务时间信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_session_stat()
描述:获取集群内所有节点上的会话状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
状态信息有如下14项,commit,rollback,sql,table_scan,blocks_fetched,physical_read_operation,shared_blocks_dirtied,local_blocks_dirtied,shared_blocks_read,local_blocks_read,blocks_read_time,blocks_write_time,sort_imemory,sort_idisk。
- DBE_PERF.get_global_session_time()
描述:提供整个集群各节点各个关键阶段的时间消耗。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_session_memory()
描述:汇聚各节点的Session级别的内存使用情况,包含执行作业在数据节点上gaussdb线程和Stream线程分配的所有内存,单位为MB。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_session_memory_detail()
描述:汇聚各节点的线程的内存使用情况,以MemoryContext节点来统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_session_stat_activity()
描述:汇聚集群内各节点上正在运行的线程相关的信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_thread_wait_status()
描述:汇聚所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_operator_history_table()
描述:汇聚当前用户所有CN上执行作业结束后的算子相关记录(持久化)。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record。
- DBE_PERF.get_global_operator_history()
描述:汇聚当前用户所有CN上执行作业结束后的算子相关记录。集群创建后的默认情况下,查询该函数必须具有MONADMIN和SYSADMIN权限。
返回值类型:record
- DBE_PERF.get_global_operator_runtime()
描述:汇聚当前用户所有CN上执行作业实时的算子相关记录。集群创建后的默认情况下,查询该函数必须具有MONADMIN和SYSADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statement_complex_history()
描述:汇聚当前用户所有CN节点上复杂查询的历史记录。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record。
- DBE_PERF.get_global_statement_complex_history_table()
描述:汇聚当前用户所有CN节点上复杂查询的历史记录(持久化)。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statement_complex_runtime()
描述:汇聚当前用户所有CN节点上复杂查询的实时信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN和SYSADMIN权限。
返回值类型:record
- DBE_PERF.get_global_memory_node_detail()
描述:汇聚某个数据库在所有节点上的内存使用情况。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_shared_memory_detail()
描述:汇聚所有节点已产生的共享内存上下文的使用信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_comm_delay()
描述:汇聚所有DN节点的通信库时延状态。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_comm_recv_stream()
描述:汇聚所有DN节点的通信库接收流状态。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_comm_send_stream()
描述:汇聚所有DN节点的通信库发送流状态。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_comm_status()
描述:汇聚所有DN节点的通信库状态。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_all_indexes()
描述:汇集所有节点当前数据库中的索引信息及I/O统计量。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_local_toastname_and_toastindexname()
描述:提供本地toast表的name和index和其关联表的对应关系。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_all_indexes()
描述:统计所有节点当前数据库中的每个索引行,显示特定索引的I/O统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_all_sequences()
描述:提供命名空间中所有sequences的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_all_tables()
描述:汇集各节点的数据库中每个表I/O的统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_all_tables()
描述:统计集群内数据库中每个表I/O的统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_local_toast_relation()
描述:提供本地toast表的name和其关联表的对应关系。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_sys_indexes()
描述:汇聚各节点的命名空间中所有系统表索引的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_sys_indexes()
描述:统计各节点的命名空间中所有系统表索引的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_sys_sequences()
描述:提供命名空间中所有系统表为sequences的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_sys_tables()
描述:提供各节点的命名空间中所有系统表的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_sys_tables()
描述:集群内汇集命名空间中所有系统表的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_user_indexes()
描述:各节点的命名空间中所有用户关系表索引的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_user_indexes()
描述:集群内汇集命名空间中所有用户关系表索引的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_user_sequences()
描述:显示各节点的命名空间中所有用户的sequences的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_statio_user_tables()
描述:显示各节点的命名空间中所有用户关系表的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statio_user_tables()
描述:集群内汇聚命名空间中所有用户关系表的I/O状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_dn_stat_all_tables()
描述:汇聚DN节点数据库中每个表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_cn_stat_all_tables()
描述:汇聚CN节点数据库中每个表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_dn_stat_all_tables()
描述:统计DN节点数据库中每个表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_cn_stat_all_tables()
描述:统计CN节点数据库中每个表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_all_indexes()
描述:汇聚所有节点数据库中每个索引的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_all_indexes()
描述:统计所有节点数据库中每个索引的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_sys_tables()
描述:汇聚各节点pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_sys_tables()
描述:统计各节点pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_sys_indexes()
描述:汇聚各节点pg_catalog、information_schema模式中所有系统表的索引状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_sys_indexes()
描述:统计各节点pg_catalog、information_schema模式中所有系统表的索引状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_user_tables()
描述:汇聚所有命名空间中用户自定义普通表的状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_user_tables()
描述:统计所有命名空间中用户自定义普通表的状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_user_indexes()
描述:汇聚所有数据库中用户自定义普通表的索引状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_user_indexes()
描述:统计所有数据库中用户自定义普通表的索引状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_database()
描述:汇聚所有节点数据库统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_database_conflicts()
描述:统计所有节点数据库统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_xact_all_tables()
描述:汇聚命名空间中所有普通表和toast表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_xact_all_tables()
描述:统计命名空间中所有普通表和toast表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_xact_sys_tables()
描述:汇聚所有节点命名空间中系统表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_xact_sys_tables()
描述:统计所有节点命名空间中系统表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_xact_user_tables()
描述:汇聚所有节点命名空间中用户表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_stat_xact_user_tables()
描述:统计所有节点命名空间中用户表的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_user_functions()
描述:汇聚所有节点命名空间中用户定义函数的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_xact_user_functions()
描述:统计所有节点命名空间中用户定义函数的事务状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_stat_bad_block()
描述:汇聚所有节点表、索引等文件的读取失败信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_file_redo_iostat()
描述:统计所有节点表、索引等文件的读取失败信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_file_iostat()
描述:汇聚所有节点数据文件IO的统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_locks()
描述:汇聚所有节点的锁信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_replication_slots()
描述:汇聚所有节点上逻辑复制信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.GET_GLOBAL_PARALLEL_DECODE_STATUS()
描述:汇聚集群所有主DN节点上的复制槽的并行解码信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。该函数仅限CN上执行,DN上执行报错。返回值同视图DBE_PERF.GLOBAL_PARALLEL_DECODE_STATUS。
返回值类型:record
- DBE_PERF.GET_GLOBAL_PARALLEL_DECODE_THREAD_INFO()
描述:汇聚集群所有主DN节点上的复制槽的并行解码线程信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。该函数仅限CN上执行,DN上执行报错。返回值同视图DBE_PERF.GLOBAL_PARALLEL_DECODE_THREAD_INFO。
返回值类型:record
- DBE_PERF.get_global_bgwriter_stat()
描述:汇聚所有节点后端写线程活动的统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_replication_stat()
描述:汇聚各节点日志同步状态信息,如发起端发送日志位置,接收端接收日志位置等。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_pooler_status()
描述:汇聚所有CN节点的pooler中的缓存连接状态。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_transactions_running_xacts()
描述:汇聚各节点运行事务的信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_transactions_running_xacts()
描述:统计各节点运行事务的信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_transactions_prepared_xacts()
描述:汇聚各节点当前准备好进行两阶段提交的事务的信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_transactions_prepared_xacts()
描述:统计各节点当前准备好进行两阶段提交的事务的信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_statement()
描述:汇聚各节点历史执行语句状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。函数返回信息具体字段参考DBE_PERF.SUMMARY_STATEMENT字段。
返回值类型:record
- DBE_PERF.get_global_statement_count()
描述:汇聚各节点SELECT、UPDATE、INSERT、DELETE,响应时间信息(TOTAL、AVG、MIN、MAX)。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_config_settings()
描述:汇聚各节点GUC参数配置信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_wait_events()
描述:汇聚各节点wait events状态信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_statement_responsetime_percentile()
描述:获取集群SQL响应时间P80,P95分布信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_summary_user_login()
描述:统计集群各节点用户登录或者退出登录次数信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.get_global_record_reset_time()
描述:汇聚集群统计信息重置(重启,主备倒换,数据库删除)时间。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- DBE_PERF.standby_statement_history(only_slow[, time1, time2])
描述:备机中用来查询FULL SQL记录的函数,主机通过表statement_history进行查询,备机通过此函数进行查询。查询该函数必须具有MONADMIN权限。函数返回信息具体字段参考STATEMENT_HISTORY字段。
参数:参见表11。
返回值类型:record
表11 standby_statement_history参数说明 参数
类型
描述
only_slow
boolean
是否仅查询慢SQL。- true为是,相当于 select .. where is_slow_sql = true。
- false或NULL为查询全部SQL,相当于不对is_slow_sql进行过滤。
time1
timestamptz
可选输入,表示查询SQL的finish_time的最小时间。
time2
timestamptz
可选输入,表示查询SQL的finish_time的最大时间。若time1>=time2,则函数执行报错。
- 两个时间参数time1、time2的说明:表示查询的SQL的finish_time所属时间段,分别表示起始与终止时间,输入NULL或者不输入表示没有限制,功能等同于select .. where finish_time between time1 and time2。
- 备机上该功能的数据并非存在表里,不存在start_time列的索引,推荐使用参数对finish_time进行条件查找。
- 由于备机Full/Slow SQL采用异步下盘方式,所以用户SQL信息存储时刻可能有所滞后,建议客户查询此接口适当扩大时间查询范围。
- DBE_PERF.global_io_wait_info()
描述:查询所有CN和DN节点上的IO管控的实时统计信息。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- pg_stat_get_mem_mbytes_reserved(tid)
参数:线程id
返回值类型:text
- pg_stat_get_file_stat()
描述:通过对数据文件I/O的统计,反映数据的I/O性能,用以发现I/O操作异常等性能问题。
返回值类型:record
- pg_stat_get_redo_stat()
返回值类型:record
- pg_stat_get_status(int8)
描述:可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。
返回值类型:record
- get_local_rel_iostat()
返回值类型:record
- DBE_PERF.get_global_rel_iostat()
描述:汇聚所有节点数据文件I/O的统计。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- pg_catalog.plancache_status(is_with_plan)
描述:是否显示在当前节点上的全局计划缓存的状态信息,即plan_info列。入参is_with_plan为bool类型,默认值为false。当入参为true时,显示plan_info的信息。函数返回信息和DBE_PERF.GLOBAL_PLANCACHE_STATUS一致。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- 当pg_catalog.plancache_status的入参为true时,如果计划较多,可能产生一定的性能劣化,推荐使用pg_catalog.global_plancache_show_plan函数查询单条SQL的详细计划信息。
- 当对所查询计划依赖的表权限不足时,会在plan_info列显示”权限不足”的报错信息。
- DBE_PERF.global_plancache_status(is_with_plan)
描述:是否显示在所有节点上的全局计划缓存的状态信息,即plan_info列。入参is_with_plan为bool类型,默认值为false。当入参为true时,显示plan_info的信息。函数返回信息见字段DBE_PERF.GLOBAL_PLANCACHE_STATUS。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- 当DBE_PERF.global_plancache_status的入参为true时,如果计划较多,可能产生一定的性能劣化,推荐使用pg_catalog.global_plancache_show_plan函数查询单条SQL的详细计划信息。
- 当对所查询计划依赖的表权限不足时,会在plan_info列显示”权限不足”的报错信息。
- pg_catalog.gs_plancache_stat()
描述:查看当前进程内全部session的参数化语句相关信息,函数返回信息和DBE_PERF.GS_PLANCACHE_STAT一致。查询该函数需要MONADMIN权限。
返回值类型:record
- pg_catalog.gs_dist_plancache_stat()
描述:查看包含备机的全部进程的参数化语句信息的系统函数,函数返回信息和DBE_PERF.GS_DIST_PLANCACHE_STAT一致。查询该函数需要MONADMIN权限。
返回值类型:record
- DBE_PERF.global_threadpool_status()
描述:显示在所有节点上的线程池中工作线程及会话的状态信息。函数返回信息见字段DBE_PERF.GLOBAL_THREADPOOL_STATUS。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
返回值类型:record
- comm_check_connection_status()
描述:返回该CN和所有活跃节点(CN和主DN)的连接情况。该函数仅支持在CN上查询,普通用户可使用。
参数:nan
返回值类型:node_name text, remote_name text, remote_host text, remote_port integer, is_connected boolean, no_error_occur boolean。
- DBE_PERF.global_comm_check_connection_status()
描述:返回所有CN和所有活跃节点(CN和主DN)的连接情况。该函数仅支持在CN上查询,权限控制继承DBE_PERF schema。集群创建后的默认情况下,查询该函数必须具有MONADMIN权限。
参数:nan
返回值类型:node_name text, remote_name text, remote_host text, remote_port integer, is_connected boolean, no_error_occur boolean
- remote_candidate_stat()
描述:显示本实例的候选buffer链中页面个数,buffer淘汰信息,包含normal buffer pool和segment buffer pool。
返回值类型:record
表12 remote_candidate_stat参数说明 名称
类型
描述
node_name
text
节点名称。
candidate_slots
integer
当前Normal Buffer Pool候选buffer链中页面个数。
get_buf_from_list
bigint
Normal Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。
get_buf_clock_sweep
bigint
Normal Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。
seg_candidate_slots
integer
当前Segment Buffer Pool候选buffer链中页面个数。
seg_get_buf_from_list
bigint
Segment Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。
seg_get_buf_clock_sweep
bigint
Segment Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。
- remote_ckpt_stat()
描述:用于显示整个集群所有实例的检查点信息和各类日志刷页情况(本节点除外、DN上不可使用)。
返回值类型:record
表13 remote_ckpt_stat参数说明 参数
类型
描述
node_name
text
实例名称。
ckpt_redo_point
text
当前实例的检查点。
ckpt_clog_flush_num
int8
从启动到当前时间clog刷盘页面数。
ckpt_csnlog_flush_num
int8
从启动到当前时间csnlog刷盘页面数。
ckpt_multixact_flush_num
int8
从启动到当前时间multixact刷盘页面数。
ckpt_predicate_flush_num
int8
从启动到当前时间predicate刷盘页面数。
ckpt_twophase_flush_num
int8
从启动到当前时间twophase刷盘页面数。
- remote_double_write_stat()
描述:显示整个集群所有实例的双写文件的情况(本节点除外、DN上不可使用)。
返回值类型:record
表14 remote_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号。
- remote_single_flush_dw_stat()
描述:显示整个集群所有实例的单页面淘汰双写文件的情况(本节点除外、DN上不可使用)。
返回值类型:record
表15 remote_single_flush_dw_stat参数说明 参数
类型
描述
node_name
text
实例名称。
curr_dwn
integer
当前双写文件的序列号。
curr_start_page
integer
当前双写文件start位置。
total_writes
bigint
当前双写文件总计写数据页面个数。
file_trunc_num
bigint
当前双写文件复用的次数。
file_reset_num
bigint
当前双写文件写满后发生重置的次数。
- remote_pagewriter_stat()
描述:显示整个集群所有实例的刷页信息和检查点信息(本节点除外、DN上不可使用)。
返回值类型:record
表16 remote_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
当前实例的检查点。
- remote_recovery_status()
描述:显示关于主机和备机的日志流控信息(本节点除外、DN上不可使用)。
返回值类型:record
表17 remote_recovery_status参数说明 参数
类型
描述
node_name
text
节点的名称,包含主机和备机。
standby_node_name
text
备机名称。
source_ip
text
主机的IP地址。
source_port
int4
主机的端口号。
dest_ip
text
备机的IP地址。
dest_port
int4
备机的端口号。
current_rto
int8
备机当前的日志流控时间,单位秒。
target_rto
int8
备机通过GUC参数设置的预期流控时间,单位秒。
current_sleep_time
int8
为了达到这个预期主机所需要的睡眠时间,单位微秒。
- remote_rto_stat()
描述:显示关于主机和备机的日志流控信息(本节点除外、DN上不可使用)。
返回值类型:record
表18 remote_rto_stat参数说明 参数
类型
描述
node_name
text
节点的名称,包含主机和备机。
rto_info
text
流控的信息,包含了备机当前的日志流控时间(单位:秒),备机通过GUC参数设置的预期流控时间(单位:秒),为了达到这个预期主机所需要的睡眠时间(单位:微秒)。
- remote_redo_stat()
描述:显示整个集群所有实例的日志回放情况(本节点除外、DN上不可使用)。
返回值类型:record
表19 remote_redo_stat参数说明 参数
类型
描述
node_name
text
实例名称。
redo_start_ptr
int8
当前实例日志回放的起始点。
redo_start_time
int8
当前实例日志回放的起始UTC时间。
redo_done_time
int8
当前实例日志回放的结束UTC时间。
curr_time
int8
当前实例的当前UTC时间。
min_recovery_point
int8
当前实例日志的最小一致性点位置。
read_ptr
int8
当前实例日志的读取位置。
last_replayed_read_ptr
int8
当前实例的日志回放位置。
recovery_done_ptr
int8
当前实例启动完成时的回放位置。
read_xlog_io_counter
int8
当前实例读取回放日志的I/O次数计数。
read_xlog_io_total_dur
int8
当前实例读取回放日志的I/O总时延。
read_data_io_counter
int8
当前实例回放过程中读取数据页面的I/O次数计数。
read_data_io_total_dur
int8
当前实例回放过程中读取数据页面的I/O总时延。
write_data_io_counter
int8
当前实例回放过程中写数据页面的I/O次数计数。
write_data_io_total_dur
int8
当前实例回放过程中写数据页面的I/O总时延。
process_pending_counter
int8
当前实例回放过程中日志分发线程的同步次数计数。
process_pending_total_dur
int8
当前实例回放过程中日志分发线程的同步总时延。
apply_counter
int8
当前实例回放过程中回放线程的同步次数计数。
apply_total_dur
int8
当前实例回放过程中回放线程的同步总时延。
speed
int8
当前实例日志回放速率。
local_max_ptr
int8
当前实例启动成功后本地收到的回放日志的最大值。
primary_flush_ptr
int8
主机落盘日志的位置。
worker_info
text
当前实例回放线程信息,若没有开并行回放则该值为空。
- pgxc_gtm_snapshot_status()
描述:用于查看当前GTM上事务信息,仅在GTM模式下支持本系统函数,GTM-LITE和GTM-FREE模式下不支持。
返回值类型:record
函数返回字段描述如下:表20 pgxc_gtm_snapshot_status返回参数说明 名称
类型
描述
xmin
xid
仍在运行的最小事务号。
xmax
xid
已完成的所有事务号中最大事务号的下一个事务号。
csn
integer
待提交事务的序列号。
oldestxmin
xid
当前最早的活跃事务在其取快照时,所有运行事务号最小的事务。
xcnt
integer
当前活跃的事务个数。
running_xids
text
当前活跃的事务号。
- pv_os_run_info()
描述:显示当前操作系统运行的状态信息,具体字段信息参考PV_OS_RUN_INFO。
参数:nan
返回值类型:setof record
- pv_session_stat()
描述:以会话线程或AutoVacuum线程为单位,统计会话状态信息,具体字段信息参考PV_SESSION_STAT。
参数:nan
返回值类型:setof record
- pv_session_time()
描述:用于统计会话线程的运行时间信息,及各执行阶段所消耗时间,具体字段信息参考PV_SESSION_TIME。
参数:nan
返回值类型:setof record
- pg_stat_get_db_temp_bytes()
描述:用于统计通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论临时文件为何创建,也不管log_temp_files如何设置。
参数:oid
返回值类型:bigint
- pg_stat_get_db_temp_files()
描述:通过数据库查询创建的临时文件数量。计算所有临时文件,不论临时文件为何创建(比如排序或者哈希),也不管log_temp_files如何设置。
参数:oid
返回值类型:bigint
- gs_prepared_statements()
描述:显示所有会话所有可用的预备语句。该函数需要SYSADMIN权限的用户才能够执行。函数返回信息具体的字段和GS_ALL_PREPARED_STATEMENTS字段一致。
返回值类型:record
- local_redo_time_count([int])
描述:返回本节点回放流程的耗时统计(仅在备机上存在有效数据)。在并行回放模式下,返回各个回放线程的流程耗时统计。在极致RTO模式下,返回各回放线程的流程耗时统计和不同日志类型的流程耗时统计。
参数:
参数名
类型
描述
operation
int
可选输入,若无输入则行为是查询统计信息。
- -1:表示关闭统计开关(默认状态为关闭)。
- 0:表示打开统计开关。
- 1:表示查询统计信息。
- 2:表示重置统计信息。
关闭统计开关后,重新打开时会清理之前的统计信息。
返回值如下:表21 local_redo_time_count返回参数说明 字段名
描述
thread_name
线程名称。
step1_total
step1的总时间,每个线程对应的流程如下:
step1_count
step1的统计次数。
step2_total
step2的总时间,每个线程对应的流程如下:
step2_count
step2的统计次数。
step3_total
step3的总时间,每个线程对应的流程如下:
step3_count
step3的统计次数。
step4_total
step4的总时间,每个线程对应的流程如下:
step4_count
step4的统计次数。
step5_total
step5的总时间,每个线程对应的流程如下:
step5_count
step5的统计次数。
step6_total
step6的总时间,每个线程对应的流程如下:
step6_count
step6的统计次数。
step7_total
step7的总时间,每个线程对应的流程如下:
step7_count
step7的统计次数。
step8_total
step8的总时间,每个线程对应的流程如下:
step8_count
step8的统计次数。
step9_total
step9的总时间,每个线程对应的流程如下:
step9_count
step9的统计次数。
日志类型的流程耗时统计:(开关为关闭的情况下,会对回放的日志进行抽样统计)字段名
流程描述
thread_name
采样的名称
step1_total
极致RTO:
- 数据类型日志:处理日志整体用时,包含step2。
- 事务类型日志:回放事务日志。
step1_count
step1的统计次数。
step2_total
极致RTO:
- 数据类型日志:回放page页日志整体用时,包含step3、step4。step2和(step3+step4)的差值主要是执行备机读多版本页面的构建。
- 事务类型日志:事务线程回放前同步等待时间。
step2_count
step2的统计次数。
step3_total
极致RTO:
- 数据类型日志:读取数据page页。
step3_count
step3的统计次数。
step4_total
极致RTO:
- 数据类型日志:回放数据page页的日志。
step4_count
step4的统计次数。
step5_total
极致RTO:
- 事务类型日志:在redo_worker线程回放的用时。
step5_count
step5的统计次数。
step6_total
极致RTO:
- 数据类型日志:更新fsm。
step6_count
step6的统计次数。
Step7_total
极致RTO:
- 事务类型日志:在redo_worker线程同步等待的用时。
Step7_count
Step7的统计次数。
- local_xlog_redo_statics()
描述:返回本节点已经回放的各个类型的日志统计信息(仅在备机上有有效数据)。
返回值如下:表22 local_xlog_redo_statics返回参数说明 字段名
描述
xlog_type
日志类型。
rmid
resource manager id。
info
Xlog operation。
num
日志个数。
extra
针对page回放日志和xact日志有有效值。- 如果是page页回放日志类型则表示从磁盘读取page的个数。
- 如果是xact日志类型则表示删除文件的个数。
- remote_bgwriter_stat()
描述:显示整个集群所有实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息(本节点除外、DN上不可使用)。
返回值类型:record
表23 remote_bgwriter_stat参数说明 参数
类型
描述
node_name
text
实例名称。
bgwr_actual_flush_total_num
bigint
从启动到当前时间bgwriter线程总计刷脏页数量。
bgwr_last_flush_num
integer
bgwriter线程上一批刷脏页数量。
candidate_slots
integer
当前候选buffer链中页面个数。
get_buffer_from_list
bigint
buffer淘汰从候选buffer链中获取页面的次数。
get_buf_clock_sweep
bigint
buffer淘汰从原淘汰方案中获取页面的次数。
示例:
remote_bgwriter_stat函数查询bgwriter线程刷页信息。
1 2 3 4 5 6 7
gaussdb=# SELECT * FROM remote_bgwriter_stat(); node_name | bgwr_actual_flush_total_num | bgwr_last_flush_num | candidate_slots | get_buffer_from_list | get_buf_clock_sweep -----------+-----------------------------+---------------------+-----------------+----------------------+--------------------- datanode3 | 0 | 0 | 266232 | 404 | 0 datanode2 | 0 | 0 | 266232 | 424 | 0 datanode1 | 0 | 0 | 266232 | 393 | 0 (3 rows)
- gs_stack()
描述:显示线程调用栈。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数:tid,线程id。tid是可选参数,指定tid参数时,函数返回tid对应线程调用栈;当不指定tid参数时,函数返回所有线程的调用栈。
返回值:当指定tid时,返回值为text;当不指定tid时,返回值为setof record。
示例:
获取指定线程调用栈。1 2 3 4 5 6 7 8 9 10 11 12 13
gaussdb=# SELECT * FROM gs_stack(139663481165568); gs_stack -------------------------------------------------------------------- __poll + 0x2d + WaitLatchOrSocket(Latch volatile*, int, int, long) + 0x29f + WaitLatch(Latch volatile*, int, long) + 0x2e + JobScheduleMain() + 0x90f + int GaussDbThreadMain<(knl_thread_role)9>(knl_thread_arg*) + 0x456+ InternalThreadFunc(void*) + 0x2d + ThreadStarterFunc(void*) + 0xa4 + start_thread + 0xc5 + clone + 0x6d + (1 row)
获取所有线程的调用栈。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
gaussdb=# SELECT * FROM gs_stack(); -[ RECORD 1 ]------------------------------------------------------------------------------------------------------- tid | 139670364324352 lwtid | 308 stack | __poll + 0x2d | CommWaitPollParam::caller(int (*)(pollfd*, unsigned long, int), unsigned long) + 0x34 | int comm_socket_call<CommWaitPollParam, int (*)(pollfd*, unsigned long, int)>(CommWaitPollParam*, int (*)(pollfd*, unsigned long , int)) + 0x28 | comm_poll(pollfd*, unsigned long, int) + 0xb1 | ServerLoop() + 0x72b | PostmasterMain(int, char**) + 0x314e | main + 0x617 | __libc_start_main + 0xf5 | 0x55d38f8db3a7 [ RECORD 2 ]------------------------------------------------------------------------------------------------------- tid | 139664851859200 lwtid | 520 stack | __poll + 0x2d | WaitLatchOrSocket(Latch volatile*, int, int, long) + 0x29f | SysLoggerMain(int) + 0xc86 | int GaussDbThreadMain<(knl_thread_role)17>(knl_thread_arg*) + 0x45d | InternalThreadFunc(void*) + 0x2d | ThreadStarterFunc(void*) + 0xa4 | start_thread + 0xc5 | clone + 0x6d
不支持多个gs_stack()并发。
- gs_perf_start(duration integer[, freq integer])
描述:采集当前节点上各个线程的on-cpu火焰图的堆栈调用数据,函数返回火焰图落盘地址。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
范围
duration
采集堆栈时长(单位为秒,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
1~60
freq
采集堆栈频率(可选参数,单位为HZ,默认为100,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
10~1000
返回值类型:text
示例:
设置频率为100HZ,采集10s的on-cpu堆栈信息。1 2 3 4 5 6 7 8
gaussdb=# SELECT gs_perf_start(10,100); gs_perf_start ------------------------------------------------------------------------------------ Successfully collected perf flamegraph data, the result filepaths are : + $GAUSSLOG/gs_flamegraph/cn_5001/flamegraph-manual-oncpu-2025-03-03_104812.html.gz;+ Record 886 cpu clock samples. + (1 row)
执行该函数时(包括后述gs_perf_start_offcpu()、gs_perf_start_all()、gs_perf_start_detail())需要gs_perf_service正常运行。同时gs_perf_service在采集过程中,需要申请环形buffer,该buffer的大小受操作系统中/proc/sys/kernel/perf_event_mlock_kb控制。如果采集过程中出现“perf mmap failed”错误,可以在调整/proc/sys/kernel/perf_event_mlock_kb的大小后,再重新执行采集。
- gs_perf_start_offcpu(duration integer)
描述:采集当前节点上各个线程的off-cpu火焰图的堆栈调用数据,函数返回火焰图落盘地址。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
范围
duration
采集堆栈时长(单位为毫秒,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
50~3000
返回值类型:text
示例:
采集2000ms的off-cpu堆栈信息。1 2 3 4 5 6 7 8
gaussdb=# SELECT gs_perf_start_offcpu(2000); gs_perf_start_offcpu ------------------------------------------------------------------------------------- Successfully collected perf flamegraph data, the result filepaths are : + $GAUSSLOG/gs_flamegraph/cn_5001/flamegraph-manual-offcpu-2025-03-03_104918.html.gz;+ Record 48 sched switch samples. + (1 row)
- gs_perf_start_detail(duration integer[, freq integer])
描述:采集当前节点所在机器上所有CPU核心的所有线程中on-cpu/off-cpu堆栈的调用栈详细信息,函数返回多核多线程原始数据压缩文件地址。每次运行该命令时,都会删除历史采集的多核多线程数据。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
范围
duration
采集堆栈时长(单位为毫秒,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
50~3000
freq
采集堆栈频率(可选参数,单位为HZ,默认为100,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
10~1000
返回值类型:text
示例:
采集2000ms的多核多线程火焰图数据。1 2 3 4 5 6 7 8 9
gaussdb=# SELECT gs_perf_start_detail(2000); gs_perf_start_detail --------------------------------------------------------------------------------------------------- Successfully collected perf detail data, the result filepath is : + $GAUSSLOG/gs_flamegraph/cn_5001/detail-2025-03-03_105043.lz4 + Please save the file locally, otherwise the file will be deleted during the next data collection.+ Record 1735211 samples. + (1 row)
- gs_perf_start_all(duration integer[, freq integer])
描述:采集当前节点所在机器上所有节点中on-cpu/off-cpu火焰图的堆栈调用数据,函数返回所有节点落盘火焰图文件地址。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER模式下只能采集oncpu火焰图数据,在DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
范围
duration
采集堆栈时长(单位为毫秒,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
50~3000
freq
采集堆栈频率(可选参数,单位为HZ,默认为100,如果输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
10~1000
返回值类型:text
示例:
设置频率为100HZ,采集1000ms当前节点所在机器上所有节点中oncpu/offcpu火焰图数据。1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT gs_perf_start_all(1000,100); gs_perf_start_all --------------------------------------------------------------------------------------------------------- Successfully collected perf flamegraph data, the result filepaths are : + $GAUSSLOG/gs_flamegraph/{nodename}/flamegraph-manual-oncpu-2025-03-03_105122.html.gz; + $GAUSSLOG/gs_flamegraph/{nodename}/flamegraph-manual-offcpu-2025-03-03_105122.html.gz; + Please visit gs_flamegraph directory(all nodes of current machine) to get results for individual nodes.+ Record 664 cpu clock samples. + Record 370 sched switch samples. + (1 row)
- gs_perf_list()
描述:查看当前节点上保存的on-cpu/off-cpu火焰图的采集数据,不会展示多核多线程火焰图记录。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数:nan
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
nodename
text
采集节点名称。
filename
text
采集落盘文件名称。
collect_type
text
采集类型。
示例:
查询当前节点上保存的火焰图生成记录。1 2 3 4 5 6 7 8 9 10 11 12 13 14
gaussdb=# SELECT * FROM gs_perf_list() limit 10; nodename | filename | collect_type ----------+--------------------------------------------------------+-------------- cn_5001 | flamegraph-auto-offcpu-2025-03-02_175022.html.gz | auto cn_5001 | flamegraph-cpuspiking-offcpu-2025-03-02_140825.html.gz | cpuspiking cn_5001 | flamegraph-auto-offcpu-2025-03-03_063522.html.gz | auto cn_5001 | flamegraph-auto-offcpu-2025-03-03_102523.html.gz | auto cn_5001 | flamegraph-auto-offcpu-2025-03-02_173523.html.gz | auto cn_5001 | flamegraph-manual-offcpu-2025-03-03_025410.html.gz | manual cn_5001 | flamegraph-manual-oncpu-2025-03-03_003428.html.gz | manual cn_5001 | flamegraph-manual-oncpu-2025-03-02_181653.html.gz | manual cn_5001 | flamegraph-manual-oncpu-2025-03-03_031815.html.gz | manual cn_5001 | flamegraph-manual-oncpu-2025-03-03_001013.html.gz | manual (10 rows)
- gs_perf_query([filename text])
描述:查询历史采集on-cpu/off-cpu火焰图的堆栈调用数据。函数归并各个线程的函数调用栈并求和函数运行时间,返回聚集后的结果。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
filename
历史采集的文件的名称(可选参数,默认为最近一次手动采集的火焰图)。
text
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
backtrace
text
堆栈名称(带树状结构)。
period
bigint
堆栈的执行时间。
level
integer
堆栈所在堆栈调用树的层级。
sequence
integer
堆栈调用树排序后的顺序。
thread_name
text
该堆栈所在的线程名称。
overhead
float
该堆栈执行所占时间百分比。
示例:
查询采集到的堆栈信息。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
gaussdb=# SELECT * FROM gs_perf_query() WHERE overhead > 2 AND level < 10; backtrace | period | level | sequence | thread_name | overhead -------------------------------------------------------------------------------+-------------+-------+----------+---------------+---------- root +| 74140000000 | 0 | 1 | root | 100 | | | | | worker +| 69930000000 | 1 | 2 | worker | 94.32 | | | | | |── start_thread +| 67620000000 | 2 | 3 | worker | 91.21 | | | | | | └── ThreadStarterFunc +| 67620000000 | 3 | 4 | worker | 91.21 | | | | | | └── internal_thread_func +| 67620000000 | 4 | 5 | worker | 91.21 | | | | | | └── int gauss_db_thread_main +| 67620000000 | 5 | 6 | worker | 91.21 | | | | | | └── backend_run +| 67620000000 | 6 | 7 | worker | 91.21 | | | | | | |── PostgresMain +| 67520000000 | 7 | 8 | worker | 91.07 | | | | | | | |── exec_simple_query +| 64800000000 | 8 | 9 | worker | 87.4 | | | | | | | | |── OpFusion::opfusion_process +| 30130000000 | 9 | 10 | worker | 40.64 | | | | | | | | |── pg_analyze_and_rewrite +| 11290000000 | 9 | 1405 | worker | 15.23 | | | | | | | | |── pg_plan_queries +| 9550000000 | 9 | 2660 | worker | 12.88 | | | | | | | | |── PortalRun +| 4680000000 | 9 | 4310 | worker | 6.31 | | | | | | | | |── finish_xact_command +| 3120000000 | 9 | 4923 | worker | 4.21 | | | | | | | | |── pg_parse_query +| 1520000000 | 9 | 5262 | worker | 2.05 | | | | | | | | |── OpFusion::opfusion_factory +| 1500000000 | 9 | 5374 | worker | 2.02 | | | | | txnsnapworker +| 1640000000 | 1 | 6770 | txnsnapworker | 2.21 | | | | | |── start_thread +| 1620000000 | 2 | 6771 | txnsnapworker | 2.19 | | | | | | └── ThreadStarterFunc +| 1620000000 | 3 | 6772 | txnsnapworker | 2.19 | | | | | | └── internal_thread_func +| 1620000000 | 4 | 6773 | txnsnapworker | 2.19 | | | | | | └── int gauss_db_thread_main +| 1620000000 | 5 | 6774 | txnsnapworker | 2.19 | | | | | | └── txn_snap_cap_worker_main +| 1620000000 | 6 | 6775 | txnsnapworker | 2.19 | | | | | | └── PostgresInitializer::InitTxnSnapWorker +| 1620000000 | 7 | 6776 | txnsnapworker | 2.19 | | | | | | |── PostgresInitializer::SetDatabase +| 1600000000 | 8 | 6777 | txnsnapworker | 2.16 | | | | | | | └── PostgresInitializer::SetDatabaseByName+| 1600000000 | 9 | 6778 | txnsnapworker | 2.16
- gs_perf_query_general([filename text])
描述:查询历史采集on-cpu/off-cpu火焰图的堆栈调用函数占比数据,由于计算精度原因,该占比数据总和可能会不等于1。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
filename
历史采集的文件的名称(可选参数,默认为最近一次手动采集的火焰图)。
text
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
function_name
text
堆栈函数名称。
percentage
float
堆栈函数调用占比。
示例:
查询最近一次手动采集生成的火焰图函数调用占比。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
gaussdb=# SELECT * FROM gs_perf_query_general(); function_name | percentage -------------------------------+------------ pthread_mutex_lock | 28.57 do_select | 7.17 undopage::init_undo_zone_lock | 7.14 unknown | 7.14 undo::recycle_main | 7.14 undo::is_valid_zone_id | 7.14 __vdso_gettimeofday | 7.14 hrtimer_start_range_ns | 7.14 undo::get_zone_id | 7.14 __pthread_mutex_unlock | 7.14 gs_stat_encap_status_info | 7.14 (11 rows)
- gs_perf_query_detail([filename text])
描述:查询历史采集on-cpu/off-cpu火焰图的堆栈函数调用占比及调用堆栈详细信息,由于计算精度原因,该占比数据总和可能会不等于1。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数说明如下:
参数名称
描述
类型
filename
历史采集的文件的名称(可选参数,默认为最近一次手动采集的火焰图)。
text
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
function_name
text
堆栈函数名称。
percentage
float
堆栈函数调用占比。
function_callstack
text
堆栈函数调用栈。
function_callstack_percentage
float
堆栈函数调用栈占比。
示例:
查询最近一次手动采集生成的火焰图调用占比详情。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
testdb3=# SELECT * FROM gs_perf_query_detail(); function_name | percentage | function_callstack | function_callstack_percentage --------------------------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------- pthread_mutex_lock | 30 | TrackStmtWorker->unknown->internal_thread_func->int gauss_db_other_feature_thread_main->pthread_mutex_lock | 30 stmt_flush_main | 20 | TrackStmtWorker->unknown->internal_thread_func->int gauss_db_other_feature_thread_main->stmt_flush_main | 20 finish_task_switch | 20 | AntiRecycler->unknown->internal_thread_func->int gauss_db_storage_thread_main->anti_recycler_main->anti_tab_recycle_loop->__select ->[enter kernel]->system_call_fastpath->SyS_select->core_ sys_select->do_select->poll_schedule_timeout->schedule_hrtimeout_range->schedule_hrtimeout_range_clock->schedule->__schedule->finish_task_switch | 10 finish_task_switch | 20 | vlogwriter->unknown->internal_thread_func->int gauss_db_storage_thread_main->verifylogwriter_main->__select ->[enter kernel]->system_call_fastpath->SyS_select->core_sys_select->do_select-> poll_schedule_timeout->schedule_hrtimeout_range->schedule_hrtimeout_range_clock->schedule->__schedule->finish_task_switch | 10 system_call_after_swapgs | 10 | WALwriter->semctl ->[enter kernel]->system_call_after_swapgs | 10 lwlock_release | 10 | AntiRecycler->unknown->internal_thread_func->int gauss_db_storage_thread_main->anti_recycler_main->anti_tab_recycle_loop->lwlock_release | 10 __select | 10 | AntiRecycler->unknown->internal_thread_func->int gauss_db_storage_thread_main->anti_recycler_main->anti_tab_recycle_loop->__select | 10 (7 rows)
- gs_perf_report()
描述:当前版本采集逻辑默认落盘,不再需要手动指令进行落盘。作用为展示上一次手动查询oncpu的文件地址。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式不可用。
参数:nan
返回值类型:text
示例:
生成火焰图文件。1 2 3 4 5
testdb3=# SELECT * FROM gs_perf_report(); gs_perf_report ------------------------------------------------ flamegraph-manual-oncpu-2025-01-24_140232.html.gz (1 row)
- gs_perf_clean()
描述:当前版本采集逻辑默认落盘,采集后不再占用内存上下文,不再需要手动指令进行清理内存数据。当前版本提示函数废弃,后续版本直接移除函数。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT/DBUSER模式下可用,在DISABLE模式下不可用。
参数:nan
返回值类型:text
示例:
清理perf产生的数据。1 2 3 4 5
gaussdb=# SELECT * FROM gs_perf_clean(); gs_perf_clean --------------------------------------------------------------------------------------------------------------------------------- gs_perf_clean is a duplicated function. now you don't need clean perf memory. this function will be removed in the next version (1 row)
- gs_perf_start_shaking_collect(scope text, unique_querys textarray, duration int, max_collect_times int, ringbuffer_size int)
描述:用于开启性能抖动监控,并返回开启操作是否成功。开启性能抖动监控后会清理已存在的性能抖动火焰图文件。重复执行gs_perf_start_shaking_collect函数,若前一次性能抖动监控未结束,后一次仅会重设unique_querys参数和清理已存在的性能抖动火焰图文件,不会影响gs_perf_service的行为。当某SQL发生慢SQL且属于unique_querys入参时,则触发性能抖动火焰图生成,如果该慢SQL在CN上执行则采集所有节点的性能抖动火焰图,否则采集本节点的性能抖动火焰图。节点开启性能抖动监控失败后会尝试关闭该节点性能抖动监控。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
表24 gs_perf_start_shaking_collect参数说明 参数名称
类型
描述
范围
scope
text
local代表开始本节点监控。all代表开启所有节点性能抖动监控,all仅支持在分布式CN上使用。必填,填NULL则为local。
local或all
unique_querys
textarray
被监控的unique sql id列表,慢sql属于这个列表的话是性能抖动。必填,填NULL则为空列表。
列表长度限制为0-32
duration
int
性能抖动最长连续监控时长,单位为分钟。必填,填NULL则为60。
5-6000
max_collect_times
int
性能抖动火焰图最大性能抖动快照保存次数,超过该值停止采集perf数据。必填,填NULL则为3。
1-10
ringbuffer_size
int
保存性能perf的环形缓冲区的大小,单位为MB。必填,填NULL则为8。
1-32
返回值说明如下:
表25 gs_perf_start_shaking_collect返回值说明 名称
类型
描述
nodename
text
节点名称。
message
text
返回值为“Successfully entered CPU_SHAKE mode.”,表示性能抖动监控开启成功。
返回值为“Current is in CPU_SHAKE mode.”,表示重复开启监控。
返回值为“Unexpected Result: start_shaking_collect error,try to close shaking collect success. Details:详细报错消息”,表示该节点开启失败,并成功关闭。
返回值为“Unexpected Result: start_shaking_collect error,try to close shaking collect failed. Details:详细报错消息”,表示该节点开启失败,并且关闭失败,常见于断连状态。
示例:
开启所有节点性能抖动监控。设置要监控的unique sql id 列表为{4124148646,2053082188},监控时长为60分钟,最大性能抖动快照保存次数为4次,环形缓冲区大小为8MB。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
gaussdb=# SELECT * FROM gs_perf_start_shaking_collect('all','{4124148646,2053082188}',60,4,8); nodename | message ----------+-------------------------------------- cn_5001 | Current is in CPU_SHAKE mode. cn_5002 | Current is in CPU_SHAKE mode. cn_5003 | Current is in CPU_SHAKE mode. dn_6001 | Successfully entered CPU_SHAKE mode. dn_6004 | Successfully entered CPU_SHAKE mode. dn_6007 | Successfully entered CPU_SHAKE mode. dn_6002 | Current is in CPU_SHAKE mode. dn_6003 | Current is in CPU_SHAKE mode. dn_6005 | Current is in CPU_SHAKE mode. dn_6006 | Current is in CPU_SHAKE mode. dn_6009 | Current is in CPU_SHAKE mode. dn_6008 | Current is in CPU_SHAKE mode. (12 rows)
- 执行gs_perf_start_shaking_collect()、gs_perf_do_shaking_collect()、gs_perf_close_shaking_collect()、gs_perf_get_shaking_collect_status()需要gs_perf_service正常运行。同时gs_perf_service在采集过程中,需要申请环形buffer,该buffer的大小由cpu核心数和gs_perf_start_shaking_collect()的入参ringbuffer_size控制。
- 执行gs_perf_start_shaking_collect()、gs_perf_do_shaking_collect()、gs_perf_close_shaking_collect()、gs_perf_get_shaking_collect_status()命令过程中手动中止或者消息返回超时只会中断前端SQL,不会终止后台perf_service进程执行对应任务。在gs_perf_do_shaking_collect()执行过程中可以通过sudo kill -9 perf_service进程PID方式关闭perf_service进程,强制打断后台任务。
- 开启、关闭性能抖动监控以及保存性能抖动火焰图以物理机器为单位。因此,在某个节点上开启、关闭和保存时,会影响同一物理机器上其他节点的监控状态。例如,在某节点上开启性能抖动监控后,同一机器上其他节点也会进入监控状态并且不能再次开启监控。
- 当scope参数为all时,开启、关闭性能抖动监控以及保存性能抖动火焰图的实现方式为顺序遍历所有节点,在每个节点上执行对应的开启、关闭和保存操作。因此,同一机器上只有一个节点会返回成功消息,其他节点会返回重复执行的失败消息。
- 集群中某节点故障后,调用系统函数且scope为all,故障节点不会执行相应操作,正常节点会执行相应操作,互不影响。返回结果中故障节点node_name字段为node_host:node_port。
- 当发生被监控的SQL触发慢SQL并采集所有节点性能抖动数据时,会顺序遍历所有节点并采集节点所在机器性能抖动数据,遍历顺序不固定,最终保证每个物理机器都有一个节点采集了性能抖动数据。
- 升级部分分片之后,可以在升级上的分片上执行新增性能抖动火焰图函数,返回结果中升级上的分片正常返回。
- 采集进程gs_perf_service重启之后,性能抖动监控会被解除。如果希望再次监控,需要重新执行开启性能抖动监控的命令。
- 使用gs_perf_start_shaking_collect()函数启动性能抖动监控后,数据库需要约1秒的时间完成火焰图资源的初始化,随后采集性能抖动火焰图文件。
- gs_perf_do_shaking_collect(scope text)
描述:用于执行性能抖动多核多线程火焰图落盘,即保存性能抖动快照,返回是否保存成功的结果。依赖于gs_perf_start_shaking_collect()接口,开启性能抖动监控才能执行性能抖动快照落盘。两次落盘最小时间间隔为1min。为防止后台采集进程hang住,当单节点执行性能抖动火焰图生成动作时,后台采集进程gs_perf_service超过10min未完成,或者gs_perf_service在执行性能抖动采集时异常退出,会返回超时消息。执行该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
表26 gs_perf_do_shaking_collect参数说明 参数名称
类型
描述
范围
scope
text
local代表本节点的perf数据落盘,all代表开始所有节点的perf数据落盘,all仅支持在分布式CN上使用。必填,填NULL则为local。
all或local
返回值说明如下:
表27 gs_perf_do_shaking_collect返回值说明 名称
类型
描述
nodename
text
节点名称。
message
text
返回值为“Successfully collect perf detail data ......”,表示性能抖动快照保存成功。
返回值为“Current is not in CPU_SHAKE mode.”,表示未在监控状态,性能抖动快照保存失败。
返回值为“Skipping collection this time ......”,表示1min内重复保存。
返回值为“Unexpected Result: do_shaking_collect error. Details: 详细报错消息”,表示执行失败。
示例:
所有节点执行性能抖动快照落盘。返回保存成功、快照路径和落盘时间。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
gaussdb=# SELECT * FROM gs_perf_do_shaking_collect('all'); nodename | message ----------+---------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------- cn_5001 | Skipping collection this time. Reason: The data has already been collected just now. cn_5002 | Skipping collection this time. Reason: The data has already been collected just now. cn_5003 | Skipping collection this time. Reason: The data has already been collected just now. dn_6001 | Successfully collect perf detail data. The file path is: $GAUSSLOG/gs_flamegraph/dn_6001/shake_detail-2025-11-27_173849.lz4, collect time is 2025-11-27_173849 dn_6004 | Successfully collect perf detail data. The file path is: $GAUSSLOG/gs_flamegraph/dn_6004/shake_detail-2025-11-27_173850.lz4, collect time is 2025-11-27_173850 dn_6007 | Skipping collection this time. Reason: The data has already been collected just now. dn_6003 | Successfully collect perf detail data. The file path is: $GAUSSLOG/gs_flamegraph/dn_6003/shake_detail-2025-11-27_173850.lz4, collect time is 2025-11-27_173850 dn_6002 | Skipping collection this time. Reason: The data has already been collected just now. dn_6005 | Skipping collection this time. Reason: The data has already been collected just now. dn_6006 | Skipping collection this time. Reason: The data has already been collected just now. dn_6009 | Skipping collection this time. Reason: The data has already been collected just now. dn_6008 | Skipping collection this time. Reason: The data has already been collected just now. (12 rows)
- gs_perf_close_shaking_collect(scope text)
描述:用于关闭性能抖动监控,并返回关闭操作是否成功。该函数依赖于gs_perf_start_shaking_collect()接口,必须先启动监控才能关闭,否则将返回未在监控中的提示信息。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
表28 gs_perf_close_shaking_collect参数说明 参数名称
类型
描述
范围
scope
text
local代表结束本节点监控,all代表结束所有节点监控,all仅支持在分布式CN上使用。必填,填NULL则为local。
local或all
返回值说明如下:
表29 gs_perf_close_shaking_collect返回值说明 名称
类型
描述
nodename
text
节点名称。
message
text
返回值为“Successfully exit CPU_SHAKE mode.”,表示性能抖动监控关闭成功。
返回值为“Current is not in CPU_SHAKE mode.”,表示未在监控状态,关闭失败。
返回值为“Unexpected Result: close_shaking_collect error. Detail: 详细报错消息”,表示关闭失败。
示例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
gaussdb=# SELECT * FROM gs_perf_close_shaking_collect('all'); nodename | message ----------+----------------------------------- cn_5001 | Current is not in CPU_SHAKE mode. cn_5002 | Current is not in CPU_SHAKE mode. cn_5003 | Current is not in CPU_SHAKE mode. dn_6001 | Successfully exit CPU_SHAKE mode. dn_6004 | Current is not in CPU_SHAKE mode. dn_6007 | Current is not in CPU_SHAKE mode. dn_6002 | Current is not in CPU_SHAKE mode. dn_6003 | Current is not in CPU_SHAKE mode. dn_6005 | Successfully exit CPU_SHAKE mode. dn_6006 | Current is not in CPU_SHAKE mode. dn_6009 | Successfully exit CPU_SHAKE mode. dn_6008 | Current is not in CPU_SHAKE mode. (12 rows)
- gs_perf_get_shaking_collect_result(scope text)
描述:用于查看最近一次监控中的性能抖动火焰图采集历史文件。每次开启性能抖动监控时,会清空性能抖动快照采集历史,返回结果仅包括正常节点。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
表30 gs_perf_get_shaking_collect_result参数说明 参数名称
类型
描述
范围
scope
text
local代表查询本节点性能抖动火焰图快照历史,all代表查询所有节点性能抖动火焰图快照历史,all仅支持在分布式CN上使用。必填,填NULL则为local。
local或all
返回值说明如下:
表31 gs_perf_get_shaking_collect_result返回值说明 名称
类型
描述
nodename
text
节点名称。
num
text
采集序号。
filename
text
性能抖动快照文件名。
shake_time
text
性能抖动快照落盘时间。
示例:
查看最近一次监控中的性能抖动火焰图采集历史。1 2 3 4 5 6 7
gaussdb=# SELECT * FROM gs_perf_get_shaking_collect_result('all'); nodename | num | filename | shake_time ----------+-----+------------------------------------+------------------- dn_6001 | 1 | shake_detail-2025-11-28_160835.lz4 | 2025-11-28_160835 dn_6004 | 1 | shake_detail-2025-11-28_160835.lz4 | 2025-11-28_160835 dn_6003 | 1 | shake_detail-2025-11-28_160835.lz4 | 2025-11-28_160835 (3 rows)
- gs_perf_get_shaking_collect_status(scope text)
描述:用于查看节点性能抖动监控状态。查询该函数需要有SYSADMIN权限或者MONADMIN权限。该函数在ROOT模式下可用,在DBUSER/DISABLE模式下不可用。
表32 gs_perf_get_shaking_collect_status参数说明 参数名称
类型
描述
范围
scope
text
local代表查询本节点所在机器的采集状态,all代表查询所有节点所在机器的采集状态,all仅用于分布式。必填,填NULL,如果执行节点为CN则为all,否则为local。
local或all
表33 gs_perf_get_shaking_collect_status返回值说明 名称
类型
描述
nodename
text
节点名称。
status
text
该节点所在机器是否已开启性能抖动监控。
- NOT IN SHAKE MODE:未在监控。
- IN SHAKE MODE:已在监控中。
- NO PERF SERVICE:采集进程未响应。
- Unexpected Result: get_shaking_connect_status error. Detail: 详细报错消息:表示查询失败。
示例:
查看该节点所在机器是否已开启性能抖动监控。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
gaussdb=# SELECT * FROM gs_perf_get_shaking_collect_status('all'); nodename | status ----------+--------------- cn_5001 | IN SHAKE MODE cn_5002 | IN SHAKE MODE cn_5003 | IN SHAKE MODE dn_6001 | IN SHAKE MODE dn_6004 | IN SHAKE MODE dn_6007 | IN SHAKE MODE dn_6002 | IN SHAKE MODE dn_6003 | IN SHAKE MODE dn_6005 | IN SHAKE MODE dn_6006 | IN SHAKE MODE dn_6009 | IN SHAKE MODE dn_6008 | IN SHAKE MODE (12 rows)
- gs_tpworker_execstmt_stat()
描述:描述语句的运行时信息,SYSADMIN和MONADMIN用户执行则显示全部正在执行的语句的信息,普通用户查询只能查询自己执行的SQL语句的信息。
返回值类型:setof record
名称
类型
描述
db_oid
oid
用户会话在后台连接到的数据库OID。
db_name
name
用户会话在后台连接到的数据库名称。
threadpool_worker
varchar
线程所属的numagroup和线程的ID,格式如下:numagroup_threadid。
thread_id
bigint
线程ID。
session_id
bigint
会话ID。
query_id
bigint
正在执行的SQL语句的ID。
query_text
text
正在执行的SQL语句内容。
unique_sql_id
bigint
SQL语句生成的唯一id。
client_hostname
text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_app_name
text
客户端app的名字。
stmt_slow_time_threshold
int
单位毫秒,SQL语句被标记为慢SQL的预设超时时间。
stmt_start_time
timestamp with time zone
语句执行的开始时间。
stmt_elapse_time
bigint
距离查询开始执行时已经过去的时间。
stmt_control_status
varchar
当前语句状态:- Waiting:等待状态,session接入未获得线程执行。
- Running:当前语句正常执行。
- Control:当前语句进入了资源管控阶段。
stmt_control_rule
text
当前语对应的慢SQL管控规则。
stmt_control_iostat
text
当前语句的iops值和最大iops上限。格式如下:curVal/maxVal。
stmt_control_memstat
text
当前字段预留,暂不支持。
stmt_control_cpustat
text
当前字段预留,暂不支持。
stmt_control_netstat
text
当前字段预留,暂不支持。
- gs_tpworker_execslot_stat()
描述:描述线程的运行时信息,SYSADMIN和MONADMIN用户执行则显示全部线程的信息,普通用户查询只能查询自己执行的SQL语句所在的线程的信息。
返回值类型:setof record
名称
类型
描述
numagroup
int
当前线程所属的numagroup。
worker_id
int
当前线程的ID。
worker_bind_type
text
线程绑定方式numabind, cpubind, allbind,nobind。
worker_cpu_affinity
text
线程和CPU的亲和性,即线程可以调度的cpu核数范围。
worker_status
varchar
当前线程状态:- Waiting:等待状态,session接入未获得线程执行。
- Running:当前语句正常执行。
- Control:当前语句进入了资源管控阶段。
served_query_id
bigint
正在执行的SQL语句的ID。
served_query_text
text
正在执行的SQL语句内容。
- gs_session_all_settings(sessionid bigint)
描述:查询本节点上sessionid对应的session的全量GUC参数配置。需要SYSADMIN或者MONADMIN权限执行。
入参说明:sessionid,会话ID。
返回值类型:setof record
函数返回字段说明如下:
名称
类型
描述
name
text
参数名称。
setting
text
参数当前值。
unit
text
参数的隐式单位。
示例:
gaussdb=# CREATE USER testuser WITH PASSWORD '********' sysadmin; gaussdb=# SET SESSION AUTHORIZATION testuser PASSWORD '********'; gaussdb=> SELECT sessionid FROM pg_stat_activity WHERE usename = 'testuser'; sessionid ----------- 788861 (1 row) gaussdb=> SELECT * FROM gs_session_all_settings(788861) WHERE name = 'work_mem'; name | setting | unit ----------+---------+------ work_mem | 131072 | kB (1 row) gaussdb=> RESET SESSION AUTHORIZATION; gaussdb=# DROP USER testuser; - gs_session_all_settings()
描述:查询本节点上所有session的全量GUC参数配置。需要SYSADMIN或者MONADMIN权限执行。
返回值类型:setof record
名称
类型
描述
sessionid
bigint
会话的ID。
pid
bigint
后端线程的ID。
name
text
参数名称。
setting
text
参数当前值。
unit
text
参数的隐式单位。
示例:
gaussdb=# SELECT * FROM gs_session_all_settings() WHERE name = 'work_mem'; sessionid | pid | name | setting | unit -----------------+-----------------+----------+---------+------ 140550214145792 | 96974 | work_mem | 65536 | kB 140550214145792 | 96971 | work_mem | 65536 | kB 140549731735296 | 140549731735296 | work_mem | 65536 | kB 140549764413184 | 140549764413184 | work_mem | 65536 | kB (4 rows) - gs_local_wal_preparse_statistics()
描述:查询本节点上日志预解析线程最近一次启动,预解析日志的情况。需要SYSADMIN权限执行。日志预解析线程通常在备DN双机复制链路断开时,由CM组件发送启动命令启动。如果日志预解析线程已经被启动,可以通过调用该函数查询最近一次的预解析状态。如果线程尚未启动,该函数将返回默认值。在容灾场景下,灾备集群的DN和CN会自动启动日志预解析线程。需要注意的是,CN仅在灾备集群中会启动日志预解析线程。
返回值类型:setof record
名称
类型
描述
preparser_term
text
最近一次预解析日志得到的最大term值。
preparser_start_time
timestamptz
最近一次预解析启动时间。
preparser_end_time
timestamptz
最近一次预解析结束时间。
preparser_start_location
text
最近一次预解析日志起始位置。
preparser_end_location
text
最近一次预解析日志结束位置。
preparser_total_bytes
int8
最近一次预解析日志量,单位:byte。
preparser_speed
int8
最近一次预解析速度,单位:byte/ms。
is_valid
bool
最近一次预解析结果是否可以用于选主。
拉起过日志预解析线程后的查询结果示例:
gaussdb=# SELECT * FROM gs_local_wal_preparse_statistics(); preparser_term | preparser_start_time | preparser_end_time | preparser_start_location | preparser_end_location | preparser_total_bytes | preparser_speed | is_valid ----------------+-------------------------------+-------------------------------+--------------------------+------------------------+-----------------------+-----------------+---------- 3107 | 2023-02-01 17:04:23.367946+08 | 2023-02-01 17:04:25.354434+08 | 00000003/C3EEA660 | 00000004/0BE60738 | 1207394520 | 1207394520 | f (1 row)未拉起过日志预解析线程时的查询查询结果示例:
gaussdb=# SELECT * FROM gs_local_wal_preparse_statistics(); preparser_term | preparser_start_time | preparser_end_time | preparser_start_location | preparser_end_location | preparser_total_bytes | preparser_speed | is_valid ----------------+------------------------+------------------------+--------------------------+------------------------+-----------------------+-----------------+---------- 0 | 2000-01-01 08:00:00+08 | 2000-01-01 08:00:00+08 | 00000000/00000000 | 00000000/00000000 | 0 | 0 | f (1 row)
- gs_hot_standby_space_info()
描述:查询standby_read/base_page,standby_read/block_info_meta,standby_read/lsn_info_meta文件夹中的文件总数和总大小。
返回值类型:setof record
名称
类型
描述
base_page_file_num
xid
base_page_file的总数量。
base_page_total_size
xid
base_page_file的总大小。
lsn_info_meta_file_num
xid
lsn_info_meta_file的总数量。
lsn_info_meta_total_size
xid
lsn_info_meta_file的总大小。
block_info_meta_file_num
xid
block_info_meta_file的总数量。
block_info_meta_total_size
xid
block_info_meta_file的总大小。
示例:
gaussdb=# SELECT * FROM gs_hot_standby_space_info(); base_page_file_num | base_page_total_size | lsn_info_meta_file_num | lsn_info_meta_total_size | block_info_meta_file_num | block_info_meta_total_size --------------------+----------------------+------------------------+--------------------------+--------------------------+---------------------------- 6 | 163840 | 6 | 3136 | 16 | 147456 (1 row)
- exrto_file_read_stat()
描述:查询备机读新增的base page file、lsn info meta file和block info meta file三种类型的文件磁盘访问次数和访问总时延。连接备DN或灾备集群CN查询,其他情况查询结果为0。
返回值类型:setof record
名称
类型
描述
lsn_info_page_disk_read_counter
int8
lsn info meta file的磁盘访问次数。
lsn_info_page_disk_read_dur
int8
lsn info meta file的磁盘访问总时延。
blk_info_meta_disk_read_counter
int8
block info meta file的磁盘访问次数。
blk_info_meta_disk_read_dur
int8
block info meta file的磁盘访问总时延。
base_page_read_disk_counter
int8
base page file的磁盘访问次数。
base_page_read_disk_dur
int8
base page file的磁盘访问总时延。
示例:
gaussdb=# SELECT * FROM exrto_file_read_stat(); lsn_info_page_disk_read_counter | lsn_info_page_disk_read_dur | blk_info_meta_disk_read_counter | blk_info_meta_disk_read_dur | base_page_read_disk_counter | base_page_read_disk_dur ---------------------------------+-----------------------------+---------------------------------+-----------------------------+-----------------------------+------------------------- 14987 | 92313 | 23879 | 129811 | 0 | 0 (1 row)
- gs_exrto_recycle_info()
描述:查询资源回收位置,其中包括每个线程的回收lsn,全局回收的lsn,查询线程最旧的快照的lsn。连接备DN或灾备集群CN查询,其他情况查询结果为0。
返回值类型:setof record
名称
类型
描述
page_redo_worker_thread_id
text
redo线程的回收lsn位置,其中thread_id为redo线程的线程id。
global_recycle_lsn
text
全局回收位置的lsn。
exrto_snapshot_oldest_lsn
text
查询线程的最旧的快照lsn。
示例:
gaussdb=# SELECT * FROM gs_exrto_recycle_info(); thread_id | recycle_lsn ----------------------------------+------------- page_redo_worker_140148895381248 | 0/7B4552E0 page_redo_worker_140148872312576 | 0/7B4535B8 global_recycle_lsn | 0/7B4535B8 exrto_snapshot_oldest_lsn | 0/8488E6D0 (4 rows) - gs_stat_get_db_conflict_all(oid)
参数:输入参数为数据库的oid。
返回值类型:setof record
名称
类型
描述
conflict_all
int8
发送回放冲突信号的总数量。
conflict_tablespace
int8
发送tablespace类型回放冲突信号的数量。
conflict_lock
int8
发送lock类型回放冲突信号的数量。
conflict_snapshot
int8
发送snapshot类型回放冲突信号的数量。
conflict_bufferpin
int8
发送bufferpin类型回放冲突信号的数量。
conflict_startup_deadlock
int8
发送startup_deadlock类型回放冲突信号的数量。
conflict_truncate
int8
发送truncate类型回放冲突信号的数量。
conflict_standby_query_timeout
int8
发送standby_query_timeout类型回放冲突信号的数量。
conflict_force_recycle
int8
发送force_recycle类型回放冲突信号的数量。
示例:gaussdb=# SELECT * FROM gs_stat_get_db_conflict_all(12738); conflict_all | conflict_tablespace | conflict_lock | conflict_snapshot | conflict_bufferpin | conflict_startup_deadlock | conflict_truncate | conflict_standby_query_timeout | conflict_force_recycle --------------+---------------------+---------------+-------------------+--------------------+---------------------------+-------------------+--------------------------------+------------------------ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row)
- gs_redo_stat_info([int])
描述:查询WAL日志回放的相关统计信息。包括回放线程的缓存命中率、回放DDL日志删除文件数量、回放线程读取数据页时产生物理读、回放线程读取WAL日志的等待事件信息。需要连接备DN查询。
返回值类型:setof record
参数类型
名称
类型
描述
输入参数
operation
int
可选输入,若无输入则行为是查询统计信息。
- 1:表示查询统计信息。
- 2:表示重置缓存命中率的统计信息。
输出参数
buffer_hit_rate
float8
回放线程的缓存命中率。
输出参数
ddl_unlink_nrels_count
int8
回放DDL日志删除文件数量。
输出参数
read_buffer_io_counter
int8
回放线程读取数据页时产生物理读的waitevent触发次数。
输出参数
read_buffer_io_total_dur
int8
回放线程读取数据页时产生物理读的waitevent总用时。
输出参数
read_buffer_io_avg_dur
int8
回放线程读取数据页时产生物理读的waitevent平均用时。
输出参数
read_buffer_io_min_dur
int8
回放线程读取数据页时产生物理读的waitevent最小用时。
输出参数
read_buffer_io_max_dur
int8
回放线程读取数据页时产生物理读的waitevent最大用时。
输出参数
read_wal_buf_counter
int8
回放线程读取WAL日志的waitevent触发次数。
输出参数
read_wal_buf_total_dur
int8
回放线程读取WAL日志的waitevent总用时。
输出参数
read_wal_buf_avg_dur
int8
回放线程读取WAL日志的waitevent平均用时。
输出参数
read_wal_buf_min_dur
int8
回放线程读取WAL日志的waitevent最小用时。
输出参数
read_wal_buf_max_dur
int8
回放线程读取WAL日志的waitevent最大用时。
示例:
gaussdb=# SELECT * FROM gs_redo_stat_info(); -[ RECORD 1 ]------------+---------- buffer_hit_rate | 70.5707 ddl_unlink_nrels_count | 3 read_buffer_io_counter | 1732 read_buffer_io_total_dur | 2850806 read_buffer_io_avg_dur | 1645 read_buffer_io_min_dur | 3 read_buffer_io_max_dur | 981639 read_wal_buf_counter | 9779 read_wal_buf_total_dur | 193612470 read_wal_buf_avg_dur | 19798 read_wal_buf_min_dur | 3 read_wal_buf_max_dur | 1914777
- gs_recovery_conflict_waitevent_info()
描述:查询处理回放冲突的函数的waitevent相关信息。需要连接备DN或灾备集群CN查询。
返回值类型:setof record
名称
类型
描述
conflict_lock_counter
int8
处理lock类型回放冲突的触发次数。
conflict_lock_total_dur
int8
处理lock类型回放冲突的总用时。
conflict_lock_avg_dur
int8
处理lock类型回放冲突的平均用时。
conflict_lock_min_dur
int8
处理lock类型回放冲突的最小用时。
conflict_lock_max_dur
int8
处理lock类型回放冲突的最大用时。
conflict_snapshot_counter
int8
处理snapshot类型回放冲突的触发次数。
conflict_snapshot_total_dur
int8
处理snapshot类型回放冲突的总用时。
conflict_snapshot_avg_dur
int8
处理snapshot类型回放冲突的平均用时。
conflict_snapshot_min_dur
int8
处理snapshot类型回放冲突的最小用时。
conflict_snapshot_max_dur
int8
处理snapshot类型回放冲突的最大用时。
conflict_tablespace_counter
int8
处理tablespace类型回放冲突的触发次数。
conflict_tablespace_total_dur
int8
处理tablespace类型回放冲突的总用时。
conflict_tablespace_avg_dur
int8
处理tablespace类型回放冲突的平均用时。
conflict_tablespace_min_dur
int8
处理tablespace类型回放冲突的最小用时。
conflict_tablespace_max_dur
int8
处理tablespace类型回放冲突的最大用时。
conflict_database_counter
int8
处理database类型回放冲突的触发次数。
conflict_database_total_dur
int8
处理database类型回放冲突的总用时。
conflict_database_avg_dur
int8
处理database类型回放冲突的平均用时。
conflict_database_min_dur
int8
处理database类型回放冲突的最小用时。
conflict_database_max_dur
int8
处理database类型回放冲突的最大用时。
conflict_truncate_counter
int8
处理truncate类型回放冲突的触发次数。
conflict_truncate_total_dur
int8
处理truncate类型回放冲突的总用时。
conflict_truncate_avg_dur
int8
处理truncate类型回放冲突的平均用时。
conflict_truncate_min_dur
int8
处理truncate类型回放冲突的最小用时。
conflict_truncate_max_dur
int8
处理truncate类型回放冲突的最大用时。
conflict_standby_query_timeout_counter
int8
处理standby_query_timeout类型回放冲突的触发次数。
conflict_standby_query_timeout_total_dur
int8
处理standby_query_timeout类型回放冲突的总用时。
conflict_standby_query_timeout_avg_dur
int8
处理standby_query_timeout类型回放冲突的平均用时。
conflict_standby_query_timeout_min_dur
int8
处理standby_query_timeout类型回放冲突的最小用时。
conflict_standby_query_timeout_max_dur
int8
处理standby_query_timeout类型回放冲突的最大用时。
conflict_force_recycle_counter
int8
处理force_recycle类型回放冲突的触发次数。
conflict_force_recycle_total_dur
int8
处理force_recycle类型回放冲突的总用时。
conflict_force_recycle_avg_dur
int8
处理force_recycle类型回放冲突的平均用时。
conflict_force_recycle_min_dur
int8
处理force_recycle类型回放冲突的最小用时。
conflict_force_recycle_max_dur
int8
处理force_recycle类型回放冲突的最大用时。
conflict_bufferpin_counter
int8
处理buffer pin类型回放冲突的触发次数。
conflict_bufferpin_total_dur
int8
处理buffer pin类型回放冲突的总用时。
conflict_bufferpin_avg_dur
int8
处理buffer pin类型回放冲突的平均用时。
conflict_bufferpin_min_dur
int8
处理buffer pin类型回放冲突的最小用时。
conflict_bufferpin_max_dur
int8
处理buffer pin类型回放冲突的最大用时。
示例:
gaussdb=# SELECT * FROM gs_recovery_conflict_waitevent_info(); -[ RECORD 1 ]----------------------------+------ conflict_lock_counter | 0 conflict_lock_total_dur | 0 conflict_lock_avg_dur | 0 conflict_lock_min_dur | 0 conflict_lock_max_dur | 0 conflict_snapshot_counter | 0 conflict_snapshot_total_dur | 0 conflict_snapshot_avg_dur | 0 conflict_snapshot_min_dur | 0 conflict_snapshot_max_dur | 0 conflict_tablespace_counter | 0 conflict_tablespace_total_dur | 0 conflict_tablespace_avg_dur | 0 conflict_tablespace_min_dur | 0 conflict_tablespace_max_dur | 0 conflict_database_counter | 0 conflict_database_total_dur | 0 conflict_database_avg_dur | 0 conflict_database_min_dur | 0 conflict_database_max_dur | 0 conflict_truncate_counter | 6 conflict_truncate_total_dur | 35872 conflict_truncate_avg_dur | 5978 conflict_truncate_min_dur | 5130 conflict_truncate_max_dur | 7459 conflict_standby_query_timeout_counter | 0 conflict_standby_query_timeout_total_dur | 0 conflict_standby_query_timeout_avg_dur | 0 conflict_standby_query_timeout_min_dur | 0 conflict_standby_query_timeout_max_dur | 0 conflict_force_recycle_counter | 0 conflict_force_recycle_total_dur | 0 conflict_force_recycle_avg_dur | 0 conflict_force_recycle_min_dur | 0 conflict_force_recycle_max_dur | 0 conflict_bufferpin_counter | 0 conflict_bufferpin_total_dur | 0 conflict_bufferpin_avg_dur | 0 conflict_bufferpin_min_dur | 0 conflict_bufferpin_max_dur | 0
- gs_display_delay_ddl_info()
返回值类型:setof record
名称
类型
描述
type
INT4
删除操作的对象是表或数据库。
lsn
TEXT
标识特定日志文件记录在此日志文件中的位置。
tablespace
INT4
数据库中用于存储表和索引的物理空间。
database
INT4
该数据库的物理存储位置。
relation
INT4
数据库中的对象,可以是表、视图、索引的物理位置。
bucketid
INT4
指定关系对象所属的bucket。
opt
INT4
压缩表相关属性。
forknum
INT4
主体命名之后的后缀命名,通过主体命名和后缀命名,可以找到唯一的物理文件。
示例:gaussdb=# SELECT * FROM gs_display_delay_ddl_info(); type | lsn | tablespace | database | relation | bucketid | opt | forknum ------+-----+------------+----------+----------+----------+-----+--------- (0 rows)
- gs_plsql_statements(sessionid bigint, pkg id oid, function id oid)
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
pid
bigint
后台线程id。
sessionid
bigint
会话id。
global_sessionid
text
全局会话id。
databaseid
oid
数据库id。
pkg_id
oid
存储过程所属PACKAGE id,如果不属于package则为0。
func_id
oid
存储过程id。
func_signature
text
存储过程名称(name + fn_collation + search_path)。
plsql_compiled_totalsize
bigint
存储过程编译产物的总内存大小。
plsql_plan_totalsize
bigint
存储过程内计划的总内存大小。
示例:
gaussdb=# CREATE OR REPLACE PROCEDURE proc_assign AS a int := 0; BEGIN a = a + 1; RAISE INFO '%', a; END; / gaussdb=# CALL proc_assign(); INFO: 1 proc_assign ------------- (1 row) gaussdb=# SELECT * FROM pg_catalog.gs_plsql_statements(pg_current_sessid()); pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | plsql_compiled_totalsize | plsql_plan_totalsize -----------+-----------+------------------+------------+--------+---------+---------------------------------------------------------------------- ------------+--------------------------+---------------------- 536868608 | 5052 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 8192 | 65536 (1 row) -- 需要过滤function id -- gaussdb=# SELECT * FROM pg_catalog.gs_plsql_statements(NULL, NULL, 16854);
pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | plsql_compiled_totalsize | plsql_plan_totalsize -----------+-----------+------------------+------------+--------+---------+---------------------------------------------------------------------- ------------+--------------------------+---------------------- 536868608 | 5052 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 8192 | 65536 (1 row) gaussdb=# DROP PROCEDURE proc_assign;
- gs_global_plsql_statements(sessionid bigint, pkg id oid, function id oid)
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
node_name
text
当前节点名称。
pid
bigint
后台线程id。
sessionid
bigint
会话id。
global_sessionid
text
全局会话id。
databaseid
oid
数据库id。
pkg_id
oid
存储过程所属PACKAGE id,如果不属于PACKAGE则为0。
func_id
oid
存储过程id。
func_signature
text
存储过程名称(name + fn_collation + search_path)。
plsql_compiled_totalsize
bigint
存储过程编译产物的总内存大小。
plsql_plan_totalsize
bigint
存储过程内计划的总内存大小。
示例:
gaussdb=# CREATE OR REPLACE PROCEDURE proc_assign AS a int := 0; BEGIN a = a + 1; RAISE INFO '%', a; END; / gaussdb=# CALL proc_assign(); INFO: 1 proc_assign ------------- (1 row) gaussdb=# SELECT * FROM pg_catalog.gs_global_plsql_statements(pg_current_sessid()); node_name | pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | plsql_compiled_totalsize | plsql_plan_totalsize --------------+------------+-----------------+------------------+------------+--------+---------+------------------------------------------------ ---------------------------------------------------------------+--------------------------+---------------------- coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 16387 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 24576 | 64512 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13509 | name: gs_global_plsql_statements(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 122880 | 216064 (2 rows) gaussdb=# DROP PROCEDURE proc_assign;
- gs_plsql_statements_details(sessionid bigint, pkg id oid, function id oid)
查询函数时,GaussDB会根据current_user的权限来决定是否允许访问。如果current_user是初始用户或系统管理员, 则可以查询所有会话信息。如果current_user是普通用户,则只能查看自己的会话信息(即session_user是当前用户的信息)。
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
pid
bigint
后台线程id。
sessionid
bigint
会话id。
global_sessionid
text
全局会话id。
databaseid
oid
数据库id。
pkg_id
oid
存储过程所属PACKAGE id,如果不属于PACKAGE则为0。
func_id
oid
存储过程id。
func_signature
text
存储过程名称(name + fn_collation + search_path)。
lineno
bigint
语句在存储过程内行号。
query
text
计划缓存语句。
usedsize
bigint
计划缓存语句使用内存大小。
totalsize
bigint
计划缓存语句总内存大小。
示例:
gaussdb=# CREATE OR REPLACE PROCEDURE proc_assign AS a int := 0; BEGIN a = a + 1; RAISE INFO '%', a; END; / gaussdb=# CALL proc_assign(); INFO: 1 proc_assign ------------- (1 row) gaussdb=# SELECT * FROM pg_catalog.gs_plsql_statements_details(pg_current_sessid()); pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | lineno | query | usedsize | totalsize -----------+-----------+------------------+------------+--------+---------+---------------------------------------------------------------------- ------------+--------+--------------+----------+----------- 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 3 | SELECT a + 1 | 15064 | 25600 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 4 | SELECT a | 12320 | 17408 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 1 | SELECT 0 | 12088 | 21504 (3 rows) -- 需要过滤function id -- gaussdb=# SELECT * FROM pg_catalog.gs_plsql_statements(NULL, NULL, 16854); pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | lineno | query | usedsize | totalsize -----------+-----------+------------------+------------+--------+---------+---------------------------------------------------------------------- ------------+--------+--------------+----------+----------- 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 3 | SELECT a + 1 | 15064 | 25600 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 4 | SELECT a | 12320 | 17408 536868608 | 5251 | 0:0#0 | 13108 | 0 | 16854 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 1 | SELECT 0 | 12088 | 21504 (3 rows) gaussdb=# DROP PROCEDURE proc_assign;
- gs_global_plsql_statements_details(sessionid bigint, pkg id oid, function id oid)
查询函数时,GaussDB会根据current_user的权限来决定是否允许访问。如果current_user是初始用户或系统管理员, 则可以查询所有会话信息。如果current_user是普通用户,则只能查看自己的会话信息(即session_user是当前用户的信息)。
返回值类型:setof record
函数返回字段说明:
名称
类型
描述
node_name
text
当前节点名称。
pid
bigint
后台线程id。
sessionid
bigint
会话id。
global_sessionid
text
全局会话id。
databaseid
oid
数据库id。
pkg_id
oid
存储过程所属PACKAGE id,如果不属于PACKAGE则为0。
func_id
oid
存储过程id。
func_signature
text
存储过程名称(name + fn_collation + search_path)。
lineno
bigint
语句在存储过程内行号。
query
text
计划缓存语句。
usedsize
bigint
计划缓存语句使用内存大小。
totalsize
bigint
计划缓存语句总内存大小。
示例:
gaussdb=# CREATE OR REPLACE PROCEDURE proc_assign AS a int := 0; BEGIN a = a + 1; RAISE INFO '%', a; END; / gaussdb=# CALL proc_assign(); INFO: 1 proc_assign ------------- (1 row) gaussdb=# SELECT * FROM pg_catalog.gs_global_plsql_statements_details(pg_current_sessid()); node_name | pid | sessionid | global_sessionid | databaseid | pkg_id | func_id | func_signature | lineno | query | use dsize | totalsize --------------+------------+-----------------+------------------+------------+--------+---------+------------------------------------------------ -----------------------------------------------------------------------+--------+---------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------+---- ------+----------- coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 16387 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 3 | SELECT a + 1 | 12160 | 18432 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 16387 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 4 | SELECT a | 10152 | 14336 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 16387 | name: proc_assign(), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 1 | SELECT 0 | 9832 | 14336 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 12 | SELECT COALESCE(sessionid::text, 'NULL') | 13992 | 22528 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 13 | SELECT COALESCE(pkg_id::text, 'NULL') | 13480 | 22528 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 14 | SELECT COALESCE(func_id::text, 'NULL') | 13480 | 22528 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 15 | SELECT 'SELECT node_name FROM pg_catalog.pgxc_node WHERE node_type in (''C'', ''D'') AND nodeis_active = true' | 10528 | 14336 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 17 | SELECT 'EXECUTE DIRECT ON (' || pg_catalog.quote_ident(row_name .node_name)|| ')''SELECT * from pg_catalog.gs_plsql_statements_details('|| sessionid_str ||', '|| pkg_id_str ||', '|| func_id_str || ');''' | 31456 | 47104 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 31 | SELECT (fet_active) | 10248 | 14336 coordinator1 | 1171777280 | 139767997523712 | 0:0#0 | 14023 | 0 | 13510 | name: gs_global_plsql_statements_details(bigint,oid,oid), fn_collation: 0, search_path: addUser: false, schemas: 2200 | 31 | SELECT (query_str_nodes) | 10248 | 14336 (10 rows) gaussdb=# DROP PROCEDURE proc_assign;
分区表统计信息函数
- gs_stat_get_partition_stats(oid)
返回值类型:record
- gs_stat_get_xact_partition_stats(oid)
返回值类型:record
- gs_stat_get_all_partitions_stats()
返回值类型:setof record
- gs_stat_get_xact_all_partitions_stats()
返回值类型:setof record
- gs_statio_get_all_partitions_stats()
返回值类型:setof record
上述五个函数示例:
运行时统计信息上报是异步的,且基于UDP协议,后台线程处理可能存在延迟和丢包,此处示例预期仅供参考。
事务外统计信息查询:
gaussdb=# CREATE TABLE part_tab1 gaussdb-# ( gaussdb(# a int, b int gaussdb(# ) gaussdb-# PARTITION BY RANGE(b) gaussdb-# ( gaussdb(# PARTITION P1 VALUES LESS THAN(10), gaussdb(# PARTITION P2 VALUES LESS THAN(20), gaussdb(# PARTITION P3 VALUES LESS THAN(MAXVALUE) gaussdb(# ); CREATE TABLE gaussdb=# CREATE TABLE subpart_tab1 gaussdb-# ( gaussdb(# month_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# dept_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# user_no VARCHAR2 ( 30 ) NOT NULL , gaussdb(# sales_amt int gaussdb(# ) gaussdb-# PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) gaussdb-# ( gaussdb(# PARTITION p_201901 VALUES LESS THAN( '201903' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) gaussdb(# ), gaussdb(# PARTITION p_201902 VALUES LESS THAN( '201904' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) gaussdb(# ) gaussdb(# ); CREATE TABLE gaussdb=# CREATE INDEX index_part_tab1 ON part_tab1(b) LOCAL gaussdb-# ( gaussdb(# PARTITION b_index1, gaussdb(# PARTITION b_index2, gaussdb(# PARTITION b_index3 gaussdb(# ); CREATE INDEX gaussdb=# CREATE INDEX idx_user_no ON subpart_tab1(user_no) LOCAL; CREATE INDEX gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# ANALYZE part_tab1; ANALYZE gaussdb=# VACUUM part_tab1; VACUUM gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# ANALYZE subpart_tab1; ANALYZE gaussdb=# VACUUM subpart_tab1; VACUUM gaussdb=# SELECT * FROM gs_stat_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+ ------------+-------------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+------------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 5 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.293965+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688861+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.291022+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688843+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.288037+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688829+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.285311+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688802+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16954 | public | part_tab1 | p3 | | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.490636+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540115+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16953 | public | part_tab1 | p2 | | 4 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.487914+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540098+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16952 | public | part_tab1 | p1 | | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 (7 rows) gaussdb=# SELECT * FROM gs_statio_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | t idx_blks_hit ---------------+------------+--------------+----------------+--------------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+-- ------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 8 | 2 | 21 | | | | 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 8 | 2 | 21 | | | | 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 8 | 2 | 21 | | | | 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 8 | 2 | 21 | | | | 16954 | public | part_tab1 | p3 | | 4 | 8 | 2 | 15 | | | | 16953 | public | part_tab1 | p2 | | 4 | 8 | 2 | 15 | | | | 16952 | public | part_tab1 | p1 | | 4 | 8 | 2 | 15 | | | | (7 rows) gaussdb=# SELECT * FROM gs_stat_get_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | last_data_changed | heap_blks_read | heap_blks_hit | idx_blks_re ad | idx_blks_hit | tup_fetch | block_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+------------+------------------------------+---------------------- --+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+------------------------+----------------+---------------+------------ ---+--------------+-----------+------------- 16952 | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+0 8 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 | 2000-01-01 08:00:00+08 | 4 | 8 | 2 | 21 | 0 | 12 (1 row)
事务内统计信息查询:
gaussdb=# BEGIN; BEGIN gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# SELECT * FROM gs_stat_xact_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+--------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 4 | 1 | 2 | 1 | 1 | 1 | 1 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16954 | public | part_tab1 | p3 | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 16953 | public | part_tab1 | p2 | | 3 | 2 | 0 | 0 | 1 | 1 | 1 | 1 16952 | public | part_tab1 | p1 | | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 (7 rows) gaussdb=# SELECT * FROM gs_stat_get_xact_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | tup_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+----------- 16952 | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 | 0 (1 row) gaussdb=# DROP TABLE part_tab1; gaussdb=# DROP TABLE subpart_tab1;
- gs_stat_get_partition_analyze_count(oid)
返回值类型:bigint
- gs_stat_get_partition_autoanalyze_count(oid)
描述:autovacuum守护线程在该分区上启动分析的次数。
返回值类型:bigint
- gs_stat_get_partition_autovacuum_count(oid)
描述:autovacuum守护线程在该分区上启动清理的次数。
返回值类型:bigint
- gs_stat_get_partition_last_analyze_time(oid)
描述:用户在该分区上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动分析的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_autovacuum_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动清理的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_data_changed_time(oid)
描述:对于在分区上的修改insert/update/delete/truncate,在该表上最后一次操作的时间。当前暂不支持。
返回值类型:timestamptz
- gs_stat_get_partition_last_vacuum_time(oid)
描述:用户在该分区上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz
- gs_stat_get_partition_numscans(oid)
返回值类型:bigint
- gs_stat_get_partition_tuples_returned(oid)
返回值类型:bigint
- gs_stat_get_partition_tuples_fetched(oid)
返回值类型:bigint
- gs_stat_get_partition_vacuum_count(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_tuples_fetched(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_numscans(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_tuples_returned(oid)
返回值类型:bigint
- gs_stat_get_partition_blocks_fetched(oid)
返回值类型:bigint
- gs_stat_get_partition_blocks_hit(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_changed(oid)
描述:该表分区上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint
- pg_stat_get_partition_live_tuples(oid)
返回值类型:bigint
- pg_stat_get_partition_dead_tuples(oid)
描述:分区表死行数。在Ustore表中仅代表不活跃行指针数量。
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_hot_updated(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_hot_updated(oid)
参数:oid
返回值类型:bigint
- gs_stat_partition_analyze_vacuum(oid)
描述:缓存加速获取特定分区的vacuum/analyze相关统计信息。
参数:partoid
返回值类型:record
- gs_stat_get_parttabentries()
描述:使用该函数可获取其他节点的分区表的vacuum/analyze相关统计信息。内部函数,不建议用户直接使用。
返回值类型:record
- gs_wlm_respool_cpu_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
control_group
name
cgroup名称。
cpu_affinity
name
CPU绑定core的数值。
cpu_usage
integer
资源池的CPU使用率。如果资源池没有进行CPU管控,则该项显示为0。
对于CN和DN混合部署的场景,CN和DN共享同一份CPU资源,因此CN和DN的cpu_usage显示相同,对于CN和DN独立部署场景,会独立显示。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CPU_INFO(); respool_name | control_group | cpu_affinity | cpu_usage ---------------+----------------------+--------------+----------- respool_cpu_2 | respool_cpu_2:Medium | 0-95 | 78 default_pool | DefaultClass:Medium | 0-32 | 65 (2 rows)
- gs_wlm_respool_connection_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_connections
name
资源池最大连接数。
curr_connections
integer
当前资源池已有连接数。
示例:1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CONNECTION_INFO(); respool_name | max_connections | curr_connections ---------------+-----------------+------------------ respool1 | -1 | 0 default_pool | -1 | 1 (2 rows)
- gs_wlm_respool_memory_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_dynamic_memory
integer
最大可使用的动态内存。
current_dynamic_memory
integer
当前已经使用的动态内存。
max_shared_memory
integer
最大可使用的共享内存。
current_shared_memory
integer
当前已经使用的共享内存。
shared_memory_hits_percent
integer
该功能不可用,留待后续演进。字段保留,恒为0。
在出现资源池动态内存使用超过最大值时,可能会出现查询GUC参数current_dynamic_memory返回的结果大于max_dynamic_memory的情况,这属于正常现象,实际并未申请内存。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_MEMORY_INFO(); respool_name | max_dynamic_memory | current_dynamic_memory | max_shared_memory | current_shared_memory | shared_memory_hits_percent -----------------+--------------------+------------------------+-------------------+-----------------------+---------------------------- default_pool | -1 | 3383kB | -1 | 3848kB | 0 resource_pool_a | 30720kB | 0kB | -1 | 0kB | 0 (2 rows)
- gs_wlm_respool_concurrency_info() 返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_concurrency
integer
资源池支持的最大并发数。
running_concurrency
integer
当前资源池正在执行的并发数。
waiting_concurrency
integer
当前资源池正在等待的并发数。如果资源池没有进行并发限制,则该项显示为0。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CONCURRENCY_INFO(); respool_name | max_concurrency | running_concurrency | waiting_concurrency -----------------+-----------------+---------------------+--------------------- default_pool | -1 | 1 | 0 resource_pool_a | -1 | 0 | 0 (2 rows) - gs_wlm_respool_io_info() 返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
io_limits
integer
每秒触发I/O的次数上限(单位:IOPS)。0表示不控制。
io_priority
text
I/O 资源管控的优先级等级。当I/O利用率高达90%时,作业的I/O操作按此优先级进行管控。None表示不控制。
current_iops
integer
当前I/O已经触发的次数(单位:IOPS)。
- 因该值与I/O统计算法有关,存在偶尔超过上限的情况,属于正常波动。
- 如果资源池没有进行I/O管控,则该项显示为0。
在I/O管控过程中,I/O操作的计数单位由GUC参数io_control_unit定义。1个io_control_unit次为1次IOPS。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_IO_INFO(); respool_name | io_limits | io_priority | current_iops -----------------+-----------+-------------+-------------- default_pool | 0 | None | 0 resource_pool_a | 0 | Low | 0 (2 rows) - gs_wlm_user_space_info()
返回值类型:setof record
名称
类型
描述
user_name
name
用户名称。
max_permanent_space
bigint
用户可使用的最大永久存储空间,单位:B。
current_permanent_space
bigint
当前用户已使用的永久存储空间,单位:B。
max_temp_space
bigint
用户可使用的最大临时存储空间,单位:B。
current_temp_space
bigint
当前用户已使用的临时存储空间,单位:B。
max_spill_space
bigint
用户可使用的最大算子落盘存储空间,单位:B。
current_spill_space
bigint
当前用户已使用的算子落盘存储空间,单位:B。
示例:1 2 3 4 5
gaussdb=# SELECT * FROM GS_WLM_USER_SPACE_INFO(); user_name | max_permanent_space | current_permanent_space | max_temp_space | current_temp_space | max_spill_space | current_spill_space -----------------------------+---------------------+-------------------------+----------------+--------------------+-----------------+--------------------- xy | -1 | 2464 | -1 | 0 | -1 | 0 (1 rows)
- gs_wlm_session_io_info()
返回值类型:setof record
名称
类型
描述。
session_id
integer
会话ID。
io_limits
integer
每秒触发I/O的次数上限(单位:IOPS)。0表示不控制。
io_priority
text
I/O 资源管控的优先级等级。当I/O利用率高达90%时,作业的I/O操作按此优先级进行管控。None表示不控制。
current_iops
integer
当前I/O已经触发的次数(单位:IOPS)。当前I/O统计值存在偶尔超过上限的情况,与I/O统计算法有关,属于正常波动。
wait_time
integer
当前I/O超过上限后等待的时间总和。
在I/O管控过程中,I/O操作的计数单位由GUC参数io_control_unit定义。1个io_control_unit次为1次IOPS。
示例:
1 2 3 4 5
gaussdb=# SELECT * FROM GS_WLM_SESSION_IO_INFO(); session_id | io_limits | io_priority | current_iops | wait_time -----------------+-----------+-------------+--------------+----------- 139976325986048 | 10 | None | 0 | 2709 (1 row)
- gs_wlm_session_memory_info()
返回值类型:setof record
名称
类型
描述
session_id
integer
session_id。
sess_used_dynamic_memory
bigint
当前已经使用的动态内存,单位为B。
sess_max_dynamic_memory
bigint
最大可使用的动态内存,单位为B。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_SESSION_MEMORY_INFO(); sessid | sess_used_dynamic_memory | sess_max_dynamic_memory -----------------+--------------------------+------------------------- 139976325986048 | 4326056 | -1 139976402532096 | 4452664 | -1 (2 rows)
- gs_emergency_operation_records()
描述:展示当前节点对Unix Domain Socket运维通道的使用情况。
返回值类型:setof record
名称
类型
描述
record_time
timestamptz
使用运维通道的时间。
action
text
使用运维通道执行的操作。
source
text
接入运维通道的来源,取值为gsql和cm。
detail
text
执行操作的具体结果。
- gs_memory_profiling(option integer)
描述:生成GaussDB当前进程的jeprof报告。option表示是否开启内存采集功能,并根据实际输入返回结果为字符串类型的说明。
参数:option,整型,操作选项。
- 0:表示关闭内存采集,函数返回“memory profiling closed”说明。
- 1:表示开启内存采集,函数返回“memory profiling opened”说明。
- 2:表示在开启内存采集的情况下进行内存调用收集,并生成jeprof报告,报告位于mem_log目录下,报告的命名格式为jeprof-YY-mm-dd_HHMMSS,函数返回“dump succeeded”说明。
- 其他:返回提示信息“Invalid input, please input 0(disable), 1(enable) or 2(dump).”。
返回值类型:text
- 仅具有SYSADMIN权限的用户可以使用该函数。
- 开启内存采集会影响性能,因此仅推荐在尝试分析内存问题(例如内存泄漏)的非性能敏感场景下开启功能。生成的jeprof报告可以通过如下命令生成PDF报告:
jeprof --show_bytes gaussdbbin路径 -pdf 生成的jeprof报告路径 > 期待输出文件.pdf