其他函数
pgxc_pool_check()
描述:检查连接池中缓存的连接数据是否与pgxc_node一致。
返回值类型:Boolean
pgxc_pool_reload()
描述:更新连接池中缓存的连接信息。
返回值类型:Boolean
reload_active_coordinator()
描述:对所有存活的CN,更新连接池中缓存的连接信息。
返回值类型:void
pgxc_lock_for_backup()
描述:为备份操作给集群加锁,这些备份是为在新增节点上做恢复。
返回值类型:Boolean
pgxc_lock_for_backup是在使用gs_dump或gs_dumpall工具备份集群前,用来给集群加锁的。当给集群加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。
pg_pool_validate(clear bool, node_name text)
描述:显示CN到节点node_name之间pooler中无效连接,当clear为true时清理无效连接。
返回值类型:record
gs_validate_node_conn(validate_type cstring, validate_node_name cstring)
描述:显示或清除当前节点接收来自指定节点的连接。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
validate_type |
cstring |
指定入参类型:
|
输入参数 |
validate_node_name |
cstring |
指定节点名称。 |
输出参数 |
pid |
bigint |
显示当前节点接收来自指定节点连接的线程id(若是线程池线程则为0)。 |
输出参数 |
sessionid |
bigint |
显示当前节点接收来自指定节点连接的session id(若是非线程池线程则为0)。 |
输出参数 |
node_name |
text |
显示当前节点接收来自指定节点连接的节点名称。 |
pgxc_pool_connection_status()
描述:检查pooler连接状态是否正常。
返回值类型:boolean
pg_nodes_memory()
描述:查看所有节点的内存占用。
返回值类型:record
table_skewness(text)
描述:查看表数据在所有节点的占比。
参数:表示待查询表的表名,为text类型。
返回值类型:record
table_skewness(text, text, text)
描述:查看表数据指定列在所有节点的占比。
参数:表示待查询表的表名、指定列名、指定的表的记录数(默认值为0,查询所有记录),都为text类型。
返回值类型:record
返回值说明:节点编号,指定列的数据行数,当前节点数据量相对总数据量的占比。
示例:
--返回't'表'a'字段前5行数据在节点上的分布。
gaussdb=# SELECT table_skewness('t', 'a',5);
table_skewness
----------------
(1,3,60.000%)
(2,2,40.000%)
(2 rows)
--返回't'表'a'字段所有数据在节点上的分布。
gaussdb=# SELECT table_skewness('t', 'a');
table_skewness
----------------
(1,7,70.000%)
(2,2,20.000%)
(0,1,10.000%)
(3 rows)
table_skewness_with_schema(text, text)
描述:查看表数据在所有节点的占比,与table_skewness(text)作用相同。
参数:表示待查询表的schema名称和表名,为text类型。
返回值类型:record
table_data_skewness(colrecord, type)
描述:查看表数据所在节点。
参数说明:
colrecord:表示待查询表的列名记录,为record类型。
type:hash分布类型。
返回值类型:smallint
示例:
--返回'test1'表的'index'字段数据所在的节点。
gaussdb=# SELECT table_data_skewness(row(index), 'R') FROM test1;
table_data_skewness
---------------------
4
3
1
2
(4 rows)
table_distribution(schemaname text, tablename text)
描述:查看指定表在各个节点上占用的存储空间。
参数:表示待查询表的模式名和表名,均为text类型。
返回值类型:record
- 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。
- table_distribution性能比table_skewness更优,尤其是在大数据量场景下,请优先考虑使用table_distribution函数。
- 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
table_distribution()
描述:查看当前库中所有表在各节点的存储空间分布情况。
返回值类型:record
- 使用本函数涉及全库表信息查询,需要具备管理员权限。
- 当前基于table_distribution()函数,GaussDB提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。
plan_seed()
描述:获取前一次查询语句的seed值(内部使用)。
返回值类型:int
pg_stat_get_env()
描述:获取当前节点的环境变量信息,仅sysadmin和monitor admin可以访问。
返回值类型:record
示例:
gaussdb=# SELECT pg_stat_get_env();
pg_stat_get_env
---------------------------------------------------------------------------------------------------------------------------------------
(coordinator1,localhost,144773,49100,/data1/GaussDB_Kernel_TRUNK/install,/data1/GaussDB_Kernel_TRUNK/install/data/coordinator1,gs_log)
(1 row)
pg_catalog.plancache_clean()
描述:清理当前节点上无人使用的全局计划缓存。
返回值类型:boolean
pg_stat_get_thread()
描述:提供当前节点下线程的状态信息,sysadmin和monitor admin用户可以查看所有线程的信息,普通用户只能查看本用户的线程信息。
返回值类型:record
pgxc_get_os_threads()
描述:提供整个集群中所有正常节点下的线程状态信息。
返回值类型:record
pg_stat_get_sql_count()
描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果和DDL/DML/DCL语句的计数结果,DDL语句包括“TRUNCATE”、“VACUUM”、“ANALYZE”、“CREATE”(不包括“CREATE ROLE”和“CREATE USER”)、“DROP”(不包括“DROP ROLE”和“DROP USER”)、“ALTER”(不包括“ALTER ROLE”、“ALTER USER”和“ALTER DEFAULT PRIVILEGES”)、“REINDEX”和“COMMENT”语句。DML语句包括“UPDATE”、“INSERT”、“DELETE”、“MERGE”、“PREPARE”、“EXPLAIN”、“SHOW”、“LOCK”、“COPY”、“CLUSTER”、“ANONYMOUS”、“DELTA”、“EXECUTE”、“MOVE”、“FETCH”、“CLOSE”、“DEALLOCATE”、“DECLARE”和“LOAD”语句。DCL语句包括“CREATE ROLE”、“CREATE USER”、“DROP ROLE”、“DROP USER”、“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”、“GRANT”、“REVOKE”、“REASSIGN”和“SET”语句。sysadmin和monitor admin用户可以查看所有用户的信息,普通用户只能查看本用户的统计信息。
返回值类型:record
pgxc_get_sql_count()
描述:提供整个集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果和DDL/DML/DCL语句的计数结果,DDL语句包括“TRUNCATE”、“VACUUM”、“ANALYZE”、“CREATE”(不包括“CREATE ROLE”和“CREATE USER”)、“DROP”(不包括“DROP ROLE”和“DROP USER”)、“ALTER”(不包括“ALTER ROLE”、“ALTER USER”和“ALTER DEFAULT PRIVILEGES”)、“REINDEX”和“COMMENT”语句。DML语句包括“UPDATE”、“INSERT”、“DELETE”、“MERGE”、“PREPARE”、“EXPLAIN”、“SHOW”、“LOCK”、“COPY”、“CLUSTER”、“ANONYMOUS”、“DELTA”、“EXECUTE”、“MOVE”、“FETCH”、“CLOSE”、“DEALLOCATE”、“DECLARE”和“LOAD”语句。DCL语句包括“CREATE ROLE”、“CREATE USER”、“DROP ROLE”、“DROP USER”、“ALTER ROLE”、“ALTER USER”、“ALTER DEFAULT PRIVILEGES”、“GRANT”、“REVOKE”、“REASSIGN”和“SET”语句。
返回值类型:record
pgxc_get_node_env()
描述:提供获取集群中所有节点的环境变量信息。
返回值类型:record
pgxc_disaster_read_set(text)
描述:设置灾备集群的节点信息到ETCD上。仅灾备集群可用,仅初始用户可调用。
返回值类型:Boolean
pgxc_disaster_read_init()
描述:初始化灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。
返回值类型:Boolean
pgxc_disaster_read_clear()
描述:清理灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。
返回值类型:Boolean
pgxc_disaster_read_status()
描述:提供灾备集群的节点信息,仅灾备集群可用。
返回值类型:record
gs_switch_relfilenode()
描述:交换两个表或分区的元信息(重分布工具内部使用,用户直接使用会有错误信息提示)。
返回值类型:int
此函数可能导致清空统计信息,建议在调用后重新收集统计信息。
DBE_PERF.global_plancache_clean()
描述:清理所有节点上无人使用的全局计划缓存。
返回值类型:Boolean
copy_error_log_create()
描述:由于COPY FROM容错机制所需要的错误表已变更为在初始化阶段创建的系统表,因此当前函数改为始终返回true,仅做兼容。
返回值类型:Boolean
列名称 |
类型 |
描述 |
---|---|---|
relname |
character varying |
表名称。以模式名.表名形式显示。 |
begintime |
timestamp with time zone |
出现数据格式错误的时间。 |
filename |
character varying |
出现数据格式错误的数据源文件名。 |
lineno |
bigint |
在数据源文件中,出现数据格式错误的行号。 |
rawrecord |
text |
在数据源文件中,出现数据格式错误的原始记录。 |
detail |
text |
详细错误信息。 |
pg_stat_get_data_senders()
描述:提供当前活跃的数据复制发送线程的详细信息。
返回值类型:record
textlen()
描述:提供查询text的逻辑长度的方法。
返回值类型:int
threadpool_status()
描述:显示线程池中工作线程及会话的状态信息。
返回值类型:record
get_local_active_session()
描述:提供当前节点保存在内存中的历史活跃session状态的采样记录,sysadmin和monitor admin权限能查看当前节点所有的历史活跃session记录,普通用户查看本会话的历史活跃session记录。
返回值类型:record
dbe_perf.get_global_active_session()
描述:提供所有CN节点和主DN节点保存在内存中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
dbe_perf.get_global_gs_asp(timestamp,timestamp)
描述:提供所有节点保存在系统表gs_asp中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
get_wait_event_info()
描述:提供wait event事件的具体信息。
返回值类型:record
dbe_perf.get_datanode_active_session(text)
描述:提供从CN查询主DN上保存在内存中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
备注:该函数查询目标DN上LOCAL_ACTIVE_SESSION视图中记录并和所有CN上的LOCAL_ACTIVE_SESSION中的记录进行匹配获取query string,所以会占用大量的内存。
dbe_perf.get_datanode_active_session_hist(text,timestamp,timestamp)
描述:提供从CN查询主DN上保存在系统表gs_asp中的历史活跃session状态的采样记录。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
备注:该函数查询目标DN上指定时间段的gs_asp记录,如果指定时间段过长造成查询的记录过多,会耗费大量时间。
generate_wdr_report(begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)
描述:基于两个snapshot生成系统诊断报告,默认初始化用户或监控管理员用户可以访问。只可在系统库中查询到结果,用户库中无法查询。
返回值类型:text
参数 |
说明 |
取值范围 |
---|---|---|
begin_snap_id |
生成某段时间内性能诊断报告的开始snapshotid。 |
- |
end_snap_id |
结束snapshot的id,默认end_snap_id大于begin_snap_id。 |
- |
report_type |
指定生成report的类型。 |
|
report_scope |
指定生成report的范围。 |
|
node_name |
|
|
generate_wdr_db_report(db_name cstring, begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)
描述:基于两个snapshot生成库级系统诊断报告。需要在系统库下执行,默认初始化用户或monadmin用户可以访问。用户只可在系统库中查询到结果,用户库中无法查询。
返回值类型:record
参数 |
说明 |
取值范围 |
---|---|---|
db_name |
指定database名称。 |
- |
begin_snap_id |
生成某段时间内性能诊断报告的开始snapshotid。 |
- |
end_snap_id |
结束snapshot的id,默认end_snap_id大于begin_snap_id。 |
- |
report_type |
指定生成report的类型。 |
|
report_scope |
指定生成report的范围。 |
|
node_name |
|
|
create_wdr_snapshot()
描述:手工生成系统诊断快照,该函数需要sysadmin权限,且只能在CCN上执行。
返回值类型:text
kill_snapshot()
描述:kill后台的WDR snapshot线程,调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。
返回值类型:void
dbe_perf.get_active_session_profile(start_ts timestamp with time zone, end_ts timestamp with time zone, need_final boolean,node_name text)
描述:基于时间戳查询asp内存中与磁盘中的数据。need_final是否查询阻塞信息,默认值为false。node_name用于区分CN、主备DN,如(cn_5001、dn_6001或dn_6002),不可缺省。505.0版本新增event_start_time、current_xid、top_xid三个字段信息,由低于505.0版本升级至505.0或更高版本时,升级观察期无法查询。
返回值类型:record
capture_view_to_json(text,integer)
描述:将视图的结果存入GUC: perf_directory所指定的目录,如果is_crossdb为1,则表示对于所有的database都会访问一次view;如果is_crossdb为0,则表示仅对当前database进行一次视图访问。该函数只有sysadmin和monitor admin用户可以执行。
返回值类型:int
reset_unique_sql(text,text,bigint)
描述:用来清理CN/DN内存中的Unique SQL(需要sysadmin/monitor admin权限)。
返回值类型:Boolean
参数 |
类型 |
描述 |
---|---|---|
scope |
text |
清理范围类型: 'GLOBAL' - 清理所有的CN/DN节点,如果是'GLOBAL',则只可以为CN节点执行此函数。 'LOCAL' - 清理本节点。 |
clean_type |
text |
'BY_USERID' - 按用户ID来进行清理Unique SQL。 'BY_CNID' - 按CN的ID来进行清理Unique SQL。 'ALL' - 全部清理。 |
clean_value |
int8 |
具体清理type对应的清理值。如果第二个参数为ALL,则第三个参数不起作用,可以取任意值。 |
wdr_xdb_query(db_name_str text, query text)
描述:提供本地跨数据库执行query的能力。例如: 在连接到testdb库时,访问test库下的表。只有初始化用户才有权限执行。
SELECT col1 from wdr_xdb_query('dbname=test','select col1 from t1') as dd(col1 int);
返回值类型:record
pg_wlm_jump_queue(pid int)
描述:调整任务到CN队列的最前端。
返回值类型:boolean
- true:成功。
- false:失败。
gs_wlm_switch_cgroup(pid int, cgroup text)
描述:调整作业的优先级到新控制组。
返回值类型:boolean
- true:成功。
- false:失败。
pv_session_memctx_detail(threadid tid, MemoryContextName text)
描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/gs_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过查询表PV_SESSION_MEMORY_DETAIL中的sessid字段获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即'')的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。
返回值类型:boolean
- true:成功。
- false:失败。
pg_shared_memctx_detail(MemoryContextName text)
描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/gs_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。
返回值类型:boolean
- true:成功。
- false:失败。
local_aio_completer_stat()
描述:显示本实例中AIO Completer线程的相关统计信息。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
node_name |
text |
当前实例名称。 |
tid |
int8 |
AIO Completer线程id。 |
thread_type |
text |
AIO Completer线程类型(读/写)。 |
aio_submitted_num |
int8 |
AIO Completer线程已提交的异步I/O请求数量。 |
aio_completed_num |
int8 |
AIO Completer线程已完成的异步I/O请求数量。 |
aio_incompleted_num |
int8 |
AIO Completer线程未完成的异步I/O请求数量。 |
slot_count_left |
int8 |
空闲slot数量。 |
local_aio_slot_usage_status()
描述:显示本实例中异步I/O提交槽位的相关统计信息。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
node_name |
text |
当前实例名称。 |
slot_id |
int4 |
槽位id。 |
slot_type |
char |
槽位类型(r:读,w:写)。 |
status |
bool |
槽位占用状态。 |
buffer_id |
int8 |
该槽位对应的buffer id。 |
relfilenode_blocknum |
text |
该槽位对应的buffer所在的物理页面位置。 |
lsn |
int8 |
页面对应的LSN。 |
submitted_time |
int8 |
页面异步提交时的时间。 |
elapsed_time |
int8 |
页面已经等待的时间。 |
remote_aio_completer_stat()
描述:显示其他实例中AIO Completer线程的相关统计信息(仅在CN上使用)。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
node_name |
text |
其他实例名称。 |
tid |
int8 |
AIO Completer线程id。 |
thread_type |
text |
AIO Completer线程类型(读/写)。 |
aio_submitted_num |
int8 |
AIO Completer线程已提交的异步I/O请求数量。 |
aio_completed_num |
int8 |
AIO Completer线程已完成的异步I/O请求数量。 |
aio_incompleted_num |
int8 |
AIO Completer线程未完成的异步I/O请求数量。 |
slot_count_left |
int8 |
空闲slot数量。 |
remote_aio_slot_usage_status()
描述:显示其他实例中异步I/O提交槽位的相关统计信息。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
node_name |
text |
其他实例名称。 |
slot_id |
int4 |
槽位id。 |
slot_type |
char |
槽位类型(r:读,w:写)。 |
status |
bool |
槽位占用状态。 |
buffer_id |
int8 |
该槽位对应的buffer id。 |
relfilenode_blocknum |
text |
该槽位对应的buffer所在的物理页面位置。 |
lsn |
int8 |
页面对应的LSN。 |
submitted_time |
int8 |
页面异步提交时的时间。 |
elapsed_time |
int8 |
页面已经等待的时间。 |
gs_get_io_type()
描述:显示本实例的I/O模式。
返回值类型:text
- BIO:表示当前实例正以BIO模式运行(即ADIO未打开)。
- DIO:表示当前实例正以DIO模式运行(即ADIO已打开)。
- BIO->DIO (In progress):表示当前实例正在从BIO到DIO模式的切换过程中。
local_bgwriter_stat()
描述:显示本实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息。
返回值类型:record
local_candidate_stat()
描述:显示本实例的候选buffer链中页面个数,buffer淘汰信息,包含normal buffer pool和segment buffer pool。
返回值类型:record
local_ckpt_stat()
描述:显示本实例的检查点信息和各类日志刷页情况。
返回值类型:record
local_double_write_stat()
描述:显示本实例的双写文件的情况。
参数 |
类型 |
描述 |
---|---|---|
node_name |
text |
实例名称。 |
curr_dwn |
int8 |
当前双写文件的序列号。 |
curr_start_page |
int8 |
当前双写文件恢复起始页面。 |
file_trunc_num |
int8 |
当前双写文件复用的次数。 |
file_reset_num |
int8 |
当前双写文件写满后发生重置的次数。 |
total_writes |
int8 |
当前双写文件总的I/O次数。 |
low_threshold_writes |
int8 |
低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 |
high_threshold_writes |
int8 |
高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 |
total_pages |
int8 |
当前刷页到双写文件区的总的页面个数。 |
low_threshold_pages |
int8 |
低效率刷页的页面个数。 |
high_threshold_pages |
int8 |
高效率刷页的页面个数。 |
file_id |
int8 |
当前双写文件的id号。 |
local_single_flush_dw_stat()
描述:显示本实例的单页面淘汰双写文件的情况。
返回值类型:record
local_pagewriter_stat()
描述:显示本实例的刷页信息和检查点信息。
返回值类型:record
local_redo_stat()
描述:显示本实例的备机的当前回放状态。
返回值类型:record
备注:返回的回放状态主要包括当前回放位置,回放最小恢复点位置等信息。
local_recovery_status()
描述:显示本实例的主机和备机的日志流控信息。
返回值类型:record
local_rto_status()
描述:显示本实例的主机和备机的日志流控信息。
返回值类型:record
gs_wlm_switch_cgroup(sess_id int8, cgroup name)
描述:切换指定会话的控制组。
返回值类型:record
pg_get_flush_lsn()
描述:返回当前节点flush的xlog位置。
返回值类型:text
pg_get_sync_flush_lsn()
描述:返回当前节点多数派flush的xlog位置。
返回值类型:text
pgxc_wlm_rebuild_user_resource_pool()
描述:重新构建用户及资源池缓存信息。需要系统管理员权限才可以执行该函数。
返回值类型:boolean
locktag_decode(locktag text)
描述:从locktag中解析锁的具体信息。
示例:
gaussdb=# select locktag_decode('271b:0:0:0:0:6');
locktag_decode
---------------------------------------------
locktype:transactionid, transactionid:10011
(1 row)
返回值类型:text
disable_conn(disconn_mode text, host text, port integer)
描述:CM Agent处理CM Server下发的命令,在DN进行选主时设置该DN拒绝连接所有DN、强制连接某个DN或轮询连接所有DN。只有初始化用户和系统管理员才可以调用该函数。
返回值类型:void
参数 |
类型 |
描述 |
---|---|---|
disconn_mode |
text |
DN连接模式:
|
host |
text |
DN的IP。 |
port |
integer |
DN的端口号。 |
dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)
描述:获取集群级的全量SQL(Full SQL)信息。只可在系统库中查询到结果,用户库中无法查询。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
start_timestamp |
timestamp with time zone |
SQL启动时间范围的开始时间点。 |
end_timestamp |
timestamp with time zone |
SQL启动时间范围的结束时间点。若start_timestamp>=end_timestamp,则函数执行报错。 |
dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)
描述:获取集群级的慢SQL(Slow SQL)信息。只可在系统库中查询到结果,用户库中无法查询。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
start_timestamp |
timestamp with time zone |
SQL启动时间范围的开始时间点。 |
end_timestamp |
timestamp with time zone |
SQL启动时间范围的结束时间点。若start_timestamp>=end_timestamp,则函数执行报错。 |
statement_detail_decode(detail text, format text, pretty boolean)
描述:解析全量/慢SQL语句中的details字段的信息。只可在系统库中查询到结果,用户库中无法查询。
返回值类型:text
参数 |
类型 |
描述 |
---|---|---|
detail |
text |
SQL语句产生的事件的集合(不可读)。 |
format |
text |
解析输出格式,取值为plaintext。 |
pretty |
boolean |
当format为plaintext时,是否以优雅的格式展示:
|
pgxc_get_csn(tid)
描述:返回普通表的事务id对应的事务提交序号(CSN)。
返回值类型:int8
pgxc_get_csn(tid,bucketid)
描述:返回给定bucketid的事务id对应的事务提交序号(CSN),入参bucketid指hashbucket表的物理bucketid,普通表为-1。
返回值类型:int8
get_global_user_transaction()
描述:返回所有节点上各用户的事务相关信息。
返回值类型:node_name name、usename name、commit_counter bigint、rollback_counter bigint、resp_min bigint、resp_max bigint、resp_avg bigint、resp_total bigint、bg_commit_counter bigint、bg_rollback_counter bigint、bg_resp_min bigint、bg_resp_max bigint、bg_resp_avg bigint、bg_resp_total bigint、dbid oid
pg_collation_for()
描述:返回入参字符串对应的排序规则。
参数:any(如果是常量必须进行显式类型转换)
返回值类型:text
pgxc_unlock_for_sp_database(name Name)
描述:释放指定数据库锁。
参数:数据库名
返回值类型:Boolean
pgxc_lock_for_sp_database(name Name)
描述:对指定的数据库加锁。
参数:数据库名
返回值类型:Boolean
pgxc_unlock_for_transfer(name Name)
描述:释放用于数据传输(数据重分布)锁。
参数:数据库名
返回值类型:Boolean
pgxc_lock_for_transfer(name Name)
描述:对数据库枷锁,用于数据传输(数据重分布)。
参数:数据库名
返回值类型:Boolean
gs_comm_proxy_thread_status()
描述:用于在集群配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计。该函数在当前版本不支持。
参数:nan
返回值类型:record
gs_catalog_attribute_records()
描述:对于指定的系统表oid,返回该系统表对应的各个字段的定义。仅支持oid小于10000的普通系统表(不支持索引、toast表等)。
参数:系统表oid
返回值类型:record
dynamic_func_control(scope text, function_name text, action text, "{params}" text[])
描述:动态开启内置的功能,当前仅支持动态开启全量SQL。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
scope |
text |
动态开启功能的范围,当前仅支持'GLOBAL/LOCAL'。 |
function_name |
text |
功能的名称,当前仅支持'STMT'。 |
action |
text |
当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN:
|
params |
text[] |
当function_name为'STMT'时,对应不同的action时,对应的params设置如下:
|
gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean)
描述:用于解析指定表页面,并返回存放解析内容的路径。
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
参数 |
类型 |
描述 |
---|---|---|
path |
text |
|
blocknum |
bigint |
|
relation_type |
text |
|
read_memory |
boolean |
|
正常使用示例:
# 解析BTree索引文件中所有页面的信息内容
# 函数调用前请依据参数说明中的内容确保文件路径真实存在
gaussdb=# SELECT gs_parse_page_bypath('base/16603/16394', -1, 'btree', false);
gs_parse_page_bypath
--------------------------------------------------------------------
gs_log_dir/dump/1663_16603_16394_-1.page
(1 row)
# 解析vm文件中所有block的可见性结果
gaussdb=# SELECT gs_parse_page_bypath('base/12828/16771_vm', -1, 'vm', false);
gs_parse_page_bypath
-----------------------------------------------------------------------
gs_log_dir/dump/1663_12828_16771_-1_vm.page
(1 row)
# 解析fsm文件中所有block的空闲空间结果
gaussdb=# SELECT gs_parse_page_bypath('base/12884/16817', -1, 'fsm', false);
gs_parse_page_bypath
--------------------------------------------------
gs_log/dump/1663_12884_16817_4294967295_fsm.page
(1 row)
# 解析clog文件中0号block的commit log日志
gaussdb=# SELECT gs_parse_page_bypath('000000000000', 0, 'clog', false);
gs_parse_page_bypath
--------------------------------------------------------------------
gs_log_dir/dump/000000000000.clog
(1 row)
异常场景报错示例:
# 入参blocknum超出取值范围时报错
gaussdb=# SELECT gs_parse_page_bypath('base/12828/16777', -10, 'heap', false);
ERROR: Blocknum should be between -1 and 4294967294.
CONTEXT: referenced column: gs_parse_page_bypath
gs_xlogdump_lsn(start_lsn text, end_lsn text)
描述:用于解析指定lsn范围之内的XLOG日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前XLOG位置。
参数:LSN起始位置,LSN结束位置
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
gs_xlogdump_xid(c_xid xid)
描述:用于解析指定xid的XLOG日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。
参数:事务ID
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text)
描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
参数 |
类型 |
描述 |
---|---|---|
path |
text |
|
blocknum |
bigint |
|
relation_type |
text |
|
gs_xlogdump_parsepage_tablepath(path text, blocknum bigint, relation_type text, read_memory boolean)
描述:用于解析指定表页面和表页面对应的日志,并返回存放解析内容的路径。可以看做一次执行gs_parse_page_bypath和gs_xlogdump_tablepath。该函数执行的前置条件是表文件存在。如果想查看已删除的表的相关日志,请直接调用gs_xlogdump_tablepath。
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
参数 |
类型 |
描述 |
---|---|---|
path |
text |
|
blocknum |
bigint |
|
relation_type |
text |
|
read_memory |
boolean |
|
gs_shared_storage_xlogdump_lsn(start_lsn text, end_lsn text, xlog_file_path text)
描述:用于解析指定共享盘的指定lsn范围之内的xlog日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前xlog位置。
返回值类型:text
备注:必须是系统管理员或运维管理员才能执行此函数。
参数 |
类型 |
描述 |
---|---|---|
start_lsn |
text |
需要解析的xlog的起始lsn。 |
end_lsn |
text |
需要解析的xlog的结束lsn。 |
xlog_file_path |
text |
可选参数。需要解析的xlog所在共享卷的路径。不指定时,解析当前CN/DN所有共享盘的xlog。 |
gs_shared_storage_ctlinfo()
描述:用于获取当前CN/DN共享卷元数据相关信息。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
xlog_file_path |
text |
共享卷的路径。 |
输出参数 |
system_id |
text |
当前共享卷上存储的system_id值。 |
输出参数 |
term |
text |
当前共享卷上存储的term值。 |
输出参数 |
xlog_file_size |
text |
共享卷上存xlog的空间大小。 |
输出参数 |
insert_tail |
text |
共享卷上当前有效的最小lsn。 |
输出参数 |
insert_head |
text |
共享卷上当前有效的最大lsn。 |
输出参数 |
shared_storage_flush_lsn |
text |
共享卷上当前实际落盘lsn。 |
gs_index_recycle_queue(Oid oid, int type, uint32 blkno)
描述:用于解析UBtree索引回收队列信息。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
oid |
oid |
|
type |
int |
|
blkno |
uint32 |
回收队列页面编号,该参数只有在type=2的时候有效,blkno有效取值范围为1~4294967294。 |
该函数功能在分布式版本上不支持,有报错提示。
gs_stat_wal_entrytable(int64 idx)
描述:用于输出xlog中预写日志插入状态表的内容。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
idx |
int64 |
|
输出参数 |
idx |
uint64 |
记录对应数组中的下标。 |
输出参数 |
endlsn |
uint64 |
记录的LSN标签。标识当前entry对应的xlog是否已经完全复制到wal buffer中:
|
输出参数 |
lrc |
int32 |
记录对应的LRC。 |
输出参数 |
status |
uint32 |
当前版本已废弃,查询结果显示为0。 |
gs_walwriter_flush_position()
描述:输出预写日志的刷新位置。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
last_flush_status_entry |
int32 |
Xlog flush上一个刷盘的tblEntry下标索引。 |
输出参数 |
last_scanned_lrc |
int32 |
Xlog flush上一次扫描到的最后一个tblEntry记录的LRC。 |
输出参数 |
curr_lrc |
int32 |
WALInsertStatusEntry状态表中LRC最新的使用情况,该LRC表示下一个Xlog记录写入时在WALInsertStatusEntry对应的LRC值。 |
输出参数 |
curr_byte_pos |
uint64 |
Xlog记录写入WAL 文件,最新分配的位置,下一个xlog记录插入点。 |
输出参数 |
prev_byte_size |
uint32 |
上一个xlog记录的长度。 |
输出参数 |
flush_result |
uint64 |
当前全局xlog刷盘的位置。 |
输出参数 |
send_result |
uint64 |
当前主机上xlog发送位置。 |
输出参数 |
shm_rqst_write_pos |
uint64 |
共享内存中记录的XLogCtl中LogwrtRqst请求的write位置。 |
输出参数 |
shm_rqst_flush_pos |
uint64 |
共享内存中记录的XLogCtl中LogwrtRqst请求的flush位置。 |
输出参数 |
shm_result_write_pos |
uint64 |
共享内存中记录的XLogCtl中LogwrtResult的write位置。 |
输出参数 |
shm_result_flush_pos |
uint64 |
共享内存中记录的XLogCtl中LogwrtResult的flush位置。 |
输出参数 |
curr_time |
text |
当前时间。 |
gs_walwriter_flush_stat(int operation)
描述:用于统计预写日志write与sync的次数频率与数据量,以及xlog文件的信息。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
operation |
int |
|
输出参数 |
write_times |
uint64 |
Xlog调用write接口的次数。 |
输出参数 |
sync_times |
uint64 |
Xlog调用sync接口次数。 |
输出参数 |
total_xlog_sync_bytes |
uint64 |
Backend线程请求写入xlog总量统计值。 |
输出参数 |
total_actual_xlog_sync_bytes |
uint64 |
调用sync接口实际刷盘的xlog总量统计值。 |
输出参数 |
avg_write_bytes |
uint32 |
每次调用XLogWrite接口请求写的xlog量。 |
输出参数 |
avg_actual_write_bytes |
uint32 |
实际每次调用write接口写的xlog量。 |
输出参数 |
avg_sync_bytes |
uint32 |
平均每次请求sync的xlog量。 |
输出参数 |
avg_actual_sync_bytes |
uint32 |
实际每次调用sync刷盘xlog量。 |
输出参数 |
total_write_time |
uint64 |
调用write操作总时间统计(单位:us)。 |
输出参数 |
total_sync_time |
uint64 |
调用sync操作总时间统计(单位:us)。 |
输出参数 |
avg_write_time |
uint32 |
每次调用write接口平均时间(单位:us)。 |
输出参数 |
avg_sync_time |
uint32 |
每次调用sync接口平均时间(单位:us)。 |
输出参数 |
curr_init_xlog_segno |
uint64 |
当前最新创建的xlog段文件编号。 |
输出参数 |
curr_open_xlog_segno |
uint64 |
当前正在写的xlog段文件编号。 |
输出参数 |
last_reset_time |
text |
上一次重置统计信息的时间。 |
输出参数 |
curr_time |
text |
当前时间。 |
pg_ls_tmpdir()
描述:返回默认表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。
参数:nan
返回值类型:record
备注:必须是系统管理员或者监控管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
name |
text |
文件名称。 |
输出参数 |
size |
int8 |
文件大小(单位:byte)。 |
输出参数 |
modification |
timestamptz |
文件最后修改时间。 |
pg_ls_tmpdir(oid)
描述:返回指定表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。
参数:oid
返回值类型:record
备注:必须是系统管理员或者监控管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
oid |
oid |
表空间id。 |
输出参数 |
name |
text |
文件名称。 |
输出参数 |
size |
int8 |
文件大小(单位:byte)。 |
输出参数 |
modification |
timestamptz |
文件最后修改时间。 |
pg_ls_waldir()
描述:返回预写日志(WAL)目录中每个文件的名称、大小和最后修改时间。
参数:nan
返回值类型:record
备注:必须是系统管理员或者监控管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
name |
text |
文件名称。 |
输出参数 |
size |
int8 |
文件大小(单位:byte)。 |
输出参数 |
modification |
timestamptz |
文件最后修改时间。 |
gs_stat_anti_cache()
描述:返回AntiCache的相关统计信息。
参数:nan
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
table_nums |
int8 |
分区数量。 |
输出参数 |
table_init_size |
int8 |
分区初始大小。 |
输出参数 |
table_max_size |
int8 |
分区大小上限。 |
输出参数 |
anti_cache_upper_limit_size |
int8 |
AntiCache大小上限。 |
输出参数 |
anti_cache_size |
int8 |
实时AntiCache大小。 |
输出参数 |
anti_cache_max_table_size |
int8 |
实时最大分区大小。 |
输出参数 |
anti_cache_min_table_size |
int8 |
实时最小分区大小。 |
gs_stat_vlog_buffer()
描述:返回verifyLog buffer的相关统计信息。
参数:nan
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
vbuffer_write_offset |
int8 |
vlog写入位置。 |
输出参数 |
vbuffer_flushed_offset |
int8 |
vlog刷盘位置。 |
输出参数 |
max_vbuffer_flushed_value |
int8 |
vlog下刷最大字节数。 |
输出参数 |
min_vbuffer_flushed_vlaue |
int8 |
vlog下刷最小字节数。 |
输出参数 |
ave_vbuffer_flushed_vlaue |
int8 |
vlog下刷平均字节数。 |
输出参数 |
vbuffer_flush_latency |
int8 |
vlog下刷时延统计。 |
gs_stat_vlog_related_io()
描述:返回verifylog文件读写的io相关统计信息。
参数:nan
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
read_data_iops |
float8 |
每秒读文件的页面数。 |
输出参数 |
vlog_read_iops |
float8 |
每秒读vlog的页面数。 |
输出参数 |
vlog_write_iops |
float8 |
每秒写vlog的页面数。 |
gs_write_term_log(void)
描述:写入一条日志记录DN节点当前的term值。备DN节点返回false,主DN节点写入成功后返回true。
返回值类型:Boolean
gs_stat_space(bool init)
描述:用于查询UStore中做Insert操作时拓展页面的状态。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
init |
bool |
是否重置已统计的数据。 |
输出参数 |
access_func |
int8 |
relation_get_buffer_for_utuple接口访问总次数。 |
输出参数 |
cache_blk |
int8 |
relation_get_buffer_for_utuple获取缓存次数。 |
输出参数 |
cache_succ |
int8 |
relation_get_buffer_for_utuple获取缓存成功次数。 |
输出参数 |
nblk_first |
int8 |
relation_get_buffer_for_utuple中第一次获取nblocks-1次数。 |
输出参数 |
nblk_first_succ |
int8 |
relation_get_buffer_for_utuple中第一次获取nblocks-1成功次数。 |
输出参数 |
nblk_second |
int8 |
relation_get_buffer_for_utuple中第二次获取nblocks-1次数。 |
输出参数 |
nblk_second_succ |
int8 |
relation_get_buffer_for_utuple中第二次获取nblocks-1成功次数。 |
输出参数 |
fsm_first |
int8 |
第一次访问FSM次数。 |
输出参数 |
fsm_first_success |
int8 |
第一次访问FSM成功次数。 |
输出参数 |
fsm_rewrite |
int8 |
FSM回写次数。 |
输出参数 |
fsm_second |
int8 |
第二次访问FSM次数。 |
输出参数 |
fsm_second_sucess |
int8 |
第二次访问FSM成功次数。 |
输出参数 |
prune_count |
int8 |
relation_get_buffer_for_utuple中Prune次数。 |
输出参数 |
prune_space |
int8 |
relation_get_buffer_for_utuple中Prune总空间。 |
输出参数 |
coprune_count |
int8 |
联合清理执行次数。 |
输出参数 |
coprune_scan_blocks |
int8 |
联合清理扫描总页数。 |
输出参数 |
coprune_prune_count |
int8 |
联合清理Prune次数。 |
输出参数 |
coprune_prune_space |
int8 |
联合清理Prune总空间。 |
输出参数 |
con_extend_count |
int8 |
并发扩页数量。 |
输出参数 |
con_extend_time |
int8 |
并发扩页总时间。 |
输出参数 |
single_extend_time |
int8 |
单一扩页次数。 |
示例:
gaussdb=# SELECT * FROM gs_stat_space(false);
access_func | cache_blk | cache_succ | nblk_first | nblk_first_succ | nblk_sencond | nblk_sencond_succ | fsm_first | fsm_first_success | fsm_rewrite | fsm_
second | fsm_second_success | prune_count | prune_space | coprune_count | coprune_scan_blocks | coprune_prune_count | coprune_prune_space | con_extend_count
| con_extend_time | single_extend_count
-------------+-----------+------------+------------+-----------------+--------------+-------------------+-----------+-------------------+-------------+-----
-------+--------------------+-------------+-------------+---------------+---------------------+---------------------+---------------------+-----------------
-+-----------------+---------------------
10082397 | 10082397 | 10082235 | 88 | 78 | 47021 | 47021 | 162 | 74 | 360996 |
360996 | 270948 | 6711 | 0 | 45497 | 222619 | 0 | 0 | 3675
| 25542884 | 26791
(1 row)
备注:请重点关注cache_succ此值较小说明系统缓存失效,prune_space 此值较小表示UStore数据页页面清理机制可能存在问题,con_extend_time此值过高可能表明UStore并发拓页时耗时较高。
gs_redo_upage(directory_path text, backup_path text, blocknum bigint, relation_type text, xlog_path text, lsn text)
描述:用于将备份的特定UStore数据页面重放到指定LSN,并在重放期间校验页面,若检测到页面受损则直接落盘该坏块,返回落盘路径、页面LSN以及受损信息,否则重放至指定LSN并落盘页面后返回,必须是系统管理员或运维管理员才能执行此函数。
返回值类型:record
参数类型 |
参数 |
类型 |
描述 |
---|---|---|---|
输入参数 |
directory_path |
text |
备份文件所在目录。 |
输入参数 |
backup_path |
text |
备份表文件的相对路径,与备份文件所在目录拼成表文件的完整路径,例如,base/15635/12488,当备份不存在时,传入null。 |
输入参数 |
blocknum |
bigint |
0~MaxBlockNumber:对应页面的块号。 |
输入参数 |
relation_type |
text |
|
输入参数 |
xlog_path |
text |
归档日志目录的绝对路径。 |
输入参数 |
lsn |
text |
lsn由两个16进制数(各32 bits)组成,中间通过"/"隔开,例如:2/962D1DF8。如果是0则重放到最新版本。 |
输出参数 |
output_filename |
text |
文件的落盘路径与文件名。 |
输出参数 |
output_lsn |
text |
最后一次页面重放的LSN。 |
输出参数 |
corruption_desc |
text |
页面受损情况描述。 |
gs_xlogdump_bylastlsn(last_lsn text, blocknum bigint, relation_type text)
描述:传入一个页面LSN以及块号,解析LSN对应的WAL日志,并获取对应块号的last LSN继续解析,直到last LSN为0或者更老版本的WAL日志已被复用回收,并将解析后的日志落盘到指定路径,必须是系统管理员或运维管理员才能执行此函数。本系统函数不支持备机调用。
返回值类型:text
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
last_lsn |
text |
解析指定页面的LSN,基于十六进制表示,如12BA/32CDEDDD,LSN可通过页面解析工具(gs_parse_page_bypath等)获取。 |
输入参数 |
blocknum |
bigint |
指定页面的逻辑块号。 参数范围:-1~MaxBlockNumber。 块号指定为-1时表示从WAL日志中获取默认块号。 |
输入参数 |
relation_type |
text |
指定解析页面的类型。 参数范围:uheap、ubtree、heap、btree、undo_record、undo_slot。 |
输出参数 |
output_filepath |
text |
WAL日志解析结果的落盘路径。 |
# 获取页面LSN信息
# 函数调用前请依据参数说明中的内容确保文件路径真实存在
gaussdb=# SELECT * FROM gs_parse_page_bypath('base/15833/16768', 0, 'uheap', false);
output_filepath
---------------------------------------------------------------
data1/database/cluster/primary/data/1663_15833_16768_0.page
(1 row)
gaussdb=# SELECT * FROM gs_xlogdump_bylastlsn('0/4593570', -1, 'uheap');
output_filepath
-------------------------------------------------------------------
/data1/database/cluster/primary/data/gs_log/dump/4593570_-1.xlog
(1 row)
gaussdb=# SELECT * FROM gs_xlogdump_bylastlsn('0/4593570', 0, 'ubtree');
ERROR: The input lsn 0/4593570 related xlog is not ubtree.
dbe_perf.get_full_sql_by_parent_id_and_timestamp(parent_id bigint, start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)
描述:根据parent_id获取某个时间段内,执行某个存储过程的数据库级的全量SQL及其子语句的记录。只可在系统库中查询到结果,用户库中无法查询。
返回值类型:record
参数 |
类型 |
描述 |
---|---|---|
parent_id |
bigint |
指定需要检索的存储过程的调用语句的unique_sql_id。 |
start_timestamp |
timestamp with time zone |
SQL启动时间范围的开始时间点。 |
end_timestamp |
timestamp with time zone |
SQL启动时间范围的结束时间点。 |
示例:
gaussdb=# CREATE TABLE test(a int,b int);
NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default.
HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE
gaussdb=# INSERT INTO test values(1,1);
INSERT 0 1
gaussdb=# CREATE PROCEDURE mypro1() as num int;
gaussdb$# begin
gaussdb$# INSERT INTO test values(2,2);
gaussdb$# DELETE FROM test where a = 2;
gaussdb$# end;
gaussdb$# /
CREATE PROCEDURE
--打开参数,跟踪存储过程子语句。
gaussdb=# SET instr_unique_sql_track_type = 'all';
SET
--打开参数,dbe_perf.statement_history表生成全量语句记录。
gaussdb=# SET track_stmt_stat_level = 'L0,L0';
SET
gaussdb=# CALL mypro1();
mypro1
--------
(1 row)
gaussdb=# SET track_stmt_stat_level = 'off,L0';
SET
gaussdb=# SET instr_unique_sql_track_type = 'top';
SET
--查询关键信息,作为函数参数使用。
gaussdb=# SELECT query,unique_query_id,start_time,finish_time FROM dbe_perf.statement_history;
query | unique_query_id | start_time | finish_time
--------------------------------------+-----------------+-------------------------------+-------------------------------
set track_stmt_stat_level = 'L0,L0'; | 636388010 | 2023-06-02 17:40:49.176155+08 | 2023-06-02 17:40:49.176543+08
call mypro1(); | 536458473 | 2023-06-02 17:40:59.028144+08 | 2023-06-02 17:40:59.032027+08
delete from test where a = ? | 583323884 | 2023-06-02 17:40:59.029955+08 | 2023-06-02 17:40:59.031577+08
insert into test values(?,?) | 769279931 | 2023-06-02 17:40:59.029219+08 | 2023-06-02 17:40:59.029947+08
(4 rows)
--通过外层语句的unique_query_id、外层语句的开始和结束时间作为参数,查询该时间段内,指定存储过程及其子语句的信息。
gaussdb=# SELECT query FROM dbe_perf.get_full_sql_by_parent_id_and_timestamp(536458473,'2023-06-02 17:40:59.028144+08','2023-06-02 17:40:59.032027+08');
query
------------------------------
call mypro1();
delete from test where a = ?
insert into test values(?,?)
(3 rows)
gaussdb=# DROP PROCEDURE mypro1();
DROP PROCEDURE
gaussdb=# DROP TABLE test;
DROP TABLE
gs_index_dump_read(int8 reset, text out_type)
描述:用于查询索引获取新页面时在循环队列中产生的buffer read信息和索引页面相同key从左到右遍历叶子页面的buffer read信息。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
reset |
int8 |
|
输入参数 |
out_type |
text |
|
输出参数 |
relfilenode |
oid |
统计到的最大buffer read值对应的索引relfilenode。 |
输出参数 |
max_count |
int8 |
最大buffer read值。 |
输出参数 |
ave_count |
int8 |
平均buffer read值。 |
- 该接口当前仅支持USTORE索引表。
- 该接口执行时,先reset清理、将记录全部置为0。再进行查询,直到下次统计到信息值之前,查询记录会一直为0。查询示例如下:
gaussdb=# SELECT * FROM gs_index_dump_read(0, 'all'); relfilenode | max_count | ave_count --------------+-------------+------------- | | (1 row) gaussdb=# SELECT * FROM gs_index_dump_read(1, 'all'); relfilenode | max_count | ave_count --------------+-------------+------------- 0 | 0 | 0 0 | 0 | 0 (2 rows)
pg_get_ilmdef(pidx integer)
描述:行存压缩系统函数,根据输入的ilm策略索引返回对应的策略信息
返回值类型:text
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
pidx |
integer |
ilm策略的索引。 |
输出参数 |
ilm_policy_info |
text |
指定ilm策略的策略信息。 |
gs_shared_storage_flush_stat(int operation)
描述:统计共享盘的写入数据量、写入速度、写入时间、读取数据量、读取速度、读取时间等。
返回值类型:record
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
operation |
int |
关闭统计开关后重新打开时会清理之前的统计信息。 |
输出参数 |
stat_switch |
bool |
统计开关是否打开。 |
输出参数 |
write_times |
uint64 |
shared_storage_xlog_copy线程调用dorado_write_xlog接口的次数。 |
输出参数 |
avg_write_bytes |
uint32 |
每次调用dorado_write_xlog接口请求写的xLog量(单位:B)。 |
输出参数 |
avg_actual_write_bytes |
uint32 |
实际每次调用dorado_write_xlog接口写的xLog量(单位:B)。 |
输出参数 |
total_write_time |
uint64 |
调用dorado_write_xlog操作总时间统计(单位:us)。 |
输出参数 |
avg_write_time |
uint32 |
每次调用dorado_write_xlog接口平均时间(单位:us)。 |
输出参数 |
avg_write_speed |
uint32 |
平均调用dorado_write_xlog接口请求写xLog的速度(单位:KB/s)。 |
输出参数 |
avg_actual_write_speed |
uint32 |
实际平均调用dorado_write_xlog接口请求写xLog的速度(单位:KB/s)。 |
输出参数 |
total_write_sleep_time |
uint64 |
shared_storage_xlog_copy线程总睡眠时间。 |
输出参数 |
read_times |
uint64 |
walreceiver线程调用dorado_read_xlog接口的次数。 |
输出参数 |
avg_read_bytes |
uint32 |
每次调用dorado_read_xlog接口请求写的xLog量(单位:B)。 |
输出参数 |
avg_actual_read_bytes |
uint32 |
实际每次调用dorado_read_xlog接口写的xLog量(单位:B)。 |
输出参数 |
total_read_time |
uint64 |
调用dorado_read_xlog操作总时间统计(单位:us)。 |
输出参数 |
avg_read_time |
uint32 |
每次调用dorado_read_xlog接口平均时间(单位:us)。 |
输出参数 |
avg_read_speed |
uint32 |
平均调用dorado_read_xlog接口请求写xLog的速度(单位:KB/s)。 |
输出参数 |
avg_actual_read_speed |
uint32 |
实际平均调用dorado_read_xlog接口请求写xLog的速度(单位:KB/s)。 |
输出参数 |
total_read_sleep_time |
uint64 |
walreceiver线程总睡眠时间。 |
输出参数 |
stat_start_time |
timestamptz |
本次统计数据开始时间,若无重置统计信息操作则为GaussDB程序开始运行时间,若有重置统计信息操作则为上次重置时间。 |
输出参数 |
stat_end_time |
timestamptz |
本次统计数据结束时间,若统计开关开启则为当前时间,若统计开关关闭则为上次关闭时间。 |
示例:
gaussdb=# SELECT * FROM gs_shared_storage_flush_stat(1);
stat_switch | write_times | avg_write_bytes | avg_actual_write_bytes | total_write_time | avg_write_time | avg_write_speed | avg_actual_write_speed | total_write_sleep_time | read_times | avg
_read_bytes | avg_actual_read_bytes | total_read_time | avg_read_time | avg_read_speed | avg_actual_read_speed | total_read_sleep_time | stat_start_time | stat_end_time
-------------+-------------+-----------------+------------------------+------------------+----------------+-----------------+------------------------+------------------------+------------+----
------------+-----------------------+-----------------+---------------+----------------+-----------------------+-----------------------+-------------------------------+------------------------
-------
t | 43644 | 8624 | 8624 | 263922553 | 6047 | 1392 | 1392 | 26918503404 | 7451 | 140
13 | 14013 | 5321082 | 714 | 19163 | 19163 | 0 | 2023-12-18 07:18:39.766855+08 | 2023-12-18 16:29:22.757
535+08
(1 row)
gs_stat_freespace(Oid relid, Oid partid, char type, int sample_ratio)
描述:通过统计信息或采样的方法估算表/分区表/索引的膨胀率,输出空间使用统计信息及膨胀率信息。
返回值类型:record
参数类型 |
参数 |
类型 |
描述 |
---|---|---|---|
输入参数 |
relation_oid |
OID |
要查询的数据表/分区表主表/索引的OID。 |
输入参数 |
partation_oid |
OID |
分区表/二级分区表/LOCAL分区索引的OID。
|
输入参数 |
relation_type |
CHAR |
表类型:
|
输入参数 |
sample_ratio |
INT8 |
采样比例,取值范围为 0-100。
|
输入参数 |
read_memory |
BOOL |
是否从内存读取页面:
|
输出参数 |
OID |
OID |
要查询的数据表/分区表/二级分区表/索引的OID。 |
输出参数 |
INFO |
TEXT |
|
- 该接口当前仅支持行存表,不支持列存表、时序表、段页式表、hashbucket表、本地临时表和全局临时表。
- 分布式CN节点查询该接口,查询结果仅代表本节点相关统计信息与膨胀率估算情况,不包含对应DN的相关信息。如需查询DN节点统计信息与膨胀率估算结果,需要连接DN节点进行查询。
示例:
-- 查询普通表信息
建表语句:
drop table if exists t;
create table t(a int) with (storage_type=ustore);
insert into t values(generate_series(1, 110000));
更新统计信息:
vacuum analyze t;
估算膨胀率:
gaussdb=# select * from gs_stat_freespace((select oid from pg_class where relname='t'), 0, 'r', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------
16735 | live_tuples: 110000, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 440000, page_header_size: 56, nblocks: 419, approx
imate_table_size: 2113464 (Bytes), approximate expansion rate: 1.62
(1 row)
采样信息:
gaussdb=# select * from gs_stat_freespace((select oid from pg_class where relname='t'), 0, 'r', 80, false);
oid |
info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------
16732 | Average page stat info: page_header_size: 28, tuple has storage: 222.22, normal tuple: 222.22, dead tuple: 0.00, unused tuple: 0.00, redirecte
d tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 152.00. Freespace stat info: nblocks: 45, approximate_table_size: 342495 (B
ytes), approximate expansion rate: 1.08.
(1 row)
-- 查询分区表单个分区信息
建表语句:
drop table if exists t;
create table t(a int) with (storage_type=ustore) partition by range(a) (partition p1 values less than(3000), partition p2 values less than(maxvalue));
insert into t values(generate_series(1, 10000));
更新统计信息:
vacuum analyze t;
查询 oid:
select oid from pg_class where relname='t';
gaussdb=# select oid from pg_class where relname='t';
oid
-------
16802
(1 row)
select oid, relname, parttype from pg_partition;
gaussdb=# select oid, relname, parttype from pg_partition;
oid | relname | parttype
-------+---------+----------
16805 | t | r
16806 | p1 | p
16807 | p2 | p
(3 rows)
估算膨胀率:
gaussdb=# select * from gs_stat_freespace(16802, 16806, 'r', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------
16806 | live_tuples: 5998, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 23992, page_header_size: 56, nblocks: 12, approximat
e_table_size: 114634 (Bytes), approximate expansion rate: 0.86
(1 row)
采样信息:
gaussdb=# select * from gs_stat_freespace(16802, 16807, 'r', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------
16807 | live_tuples: 14002, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 56008, page_header_size: 56, nblocks: 27, approxima
te_table_size: 267550 (Bytes), approximate expansion rate: 0.83
(1 row)
-- 查询分区表所有分区信息
建表语句:
drop table if exists t;
create table t(a int) with (storage_type=ustore) partition by range(a) (partition p1 values less than(3000), partition p2 values less than(maxvalue));
insert into t values(generate_series(1, 10000));
更新统计信息:
vacuum analyze t;
查询 oid:
select oid from pg_class where relname='t';
gaussdb=# select oid from pg_class where relname='t';
oid
-------
16802
(1 row)
select oid, relname, parttype from pg_partition;
gaussdb=# select oid, relname, parttype from pg_partition;
oid | relname | parttype
-------+---------+----------
16805 | t | r
16806 | p1 | p
16807 | p2 | p
(3 rows)
估算膨胀率:
gaussdb=# select * from gs_stat_freespace(16802, 0, 'r', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------
16806 | live_tuples: 5998, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 23992, page_header_size: 56, nblocks: 12, approximat
e_table_size: 114634 (Bytes), approximate expansion rate: 0.86
16807 | live_tuples: 14002, dead_tuples: 0, avg_tuple_len: 4, tuple_header_size: 11, rowptr_size: 56008, page_header_size: 56, nblocks: 27, approxima
te_table_size: 267550 (Bytes), approximate expansion rate: 0.83
(2 rows)
采样信息:
gaussdb=# select * from gs_stat_freespace(16802, 0, 'r', 60, false);
oid |
info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------
16806 | Average page stat info: page_header_size: 56, tuple has storage: 249.92, normal tuple: 249.92, dead tuple: 0.00, unused tuple: 0.00, redirecte
d tuple: 0.00, td_count: 4.00, potential_freespace: 1034.33, actual_freespace: 1034.33. Freespace stat info: nblocks: 12, approximate_table_size: 84636
(Bytes), approximate expansion rate: 1.16.
16807 | Average page stat info: page_header_size: 56, tuple has storage: 259.30, normal tuple: 259.30, dead tuple: 0.00, unused tuple: 0.00, redirecte
d tuple: 0.00, td_count: 4.00, potential_freespace: 771.70, actual_freespace: 771.70. Freespace stat info: nblocks: 27, approximate_table_size: 197532
(Bytes), approximate expansion rate: 1.12.
(2 rows)
-- 查询普通索引信息
建表语句:
drop table if exists t;
create table t(a int, b int, c varchar(1000)) with (storage_type=ustore);
create index on t(a);
insert into t values(generate_series(1, 100000), generate_series(1, 100000), 'kjgkjature');
更新统计信息:
vacuum analyze t;
估算膨胀率:
gaussdb=# select * from gs_stat_freespace((select oid from pg_class where relname='t_a_idx'), 0, 'i', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
16776 | live_tuples: 100000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 401548, page_head
er_size: 24, nblocks: 387, approximate_table_size: 2838700 (Bytes), approximate expansion rate: 1.12
(1 row)
采样信息:
gaussdb=# select * from gs_stat_freespace((select oid from pg_class where relname='t_a_idx'), 0, 'i', 60, false);
oid |
info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------
16776 | Average page stat info: page_header_size: 24, tuple has storage: 260.39, normal tuple: 260.39, dead tuple: 0.00, unused tuple: 0.02, redirecte
d tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 845.05. Freespace stat info: nblocks: 387, approximate_table_size: 3044529
(Bytes), approximate expansion rate: 1.04.
(1 row)
-- 查询 local 分区索引单个分区信息
建表语句:
drop table if exists t;
create table t(a int) with (storage_type=ustore) partition by range(a) (partition p1 values less than(3000), partition p2 values less than(maxvalue));;
create index on t(a) local;
insert into t values(generate_series(1, 10000));
更新统计信息:
vacuum analyze t;
查询 oid:
gaussdb=# select oid from pg_class where relname='t_a_idx';
oid
-------
16814
(1 row)
gaussdb=# select oid, relname, parttype from pg_partition;
oid | relname | parttype
-------+----------+----------
16811 | t | r
16812 | p1 | p
16813 | p2 | p
16815 | p1_a_idx | x
16816 | p2_a_idx | x
(5 rows)
估算膨胀率:
gaussdb=# select * from gs_stat_freespace(16814, 16815, 'i', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
16815 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40056, page_header
_size: 24, nblocks: 14, approximate_table_size: 281400 (Bytes), approximate expansion rate: 0.41
(1 row)
采样信息:
gaussdb=# select * from gs_stat_freespace(16814, 16815, 'i', 80, false);
oid |
info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------
16815 | Average page stat info: page_header_size: 24, tuple has storage: 215.93, normal tuple: 215.93, dead tuple: 0.00, unused tuple: 0.50, redirecte
d tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 2087.43. Freespace stat info: nblocks: 14, approximate_table_size: 91476 (B
ytes), approximate expansion rate: 1.25.
(1 row)
-- 查询 local 分区索引所有分区信息
建表语句:
drop table if exists t;
create table t(a int) with (storage_type=ustore) partition by range(a) (partition p1 values less than(3000), partition p2 values less than(maxvalue));;
create index on t(a) local;
insert into t values(generate_series(1, 10000));
更新统计信息:
vacuum analyze t;
查询 oid:
gaussdb=# select oid from pg_class where relname='t_a_idx';
oid
-------
16814
(1 row)
估算膨胀率:
gaussdb=# select * from gs_stat_freespace(16814, 0, 'i', 0, false);
oid | info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
16815 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40056, page_header
_size: 24, nblocks: 14, approximate_table_size: 281400 (Bytes), approximate expansion rate: 0.41
16816 | live_tuples: 10000, dead_tuples: 0, origin_avg_tuple_len 4, max_align_avg_tuple_len: 8, tuple_header_size: 16, rowptr_size: 40116, page_header
_size: 24, nblocks: 29, approximate_table_size: 282900 (Bytes), approximate expansion rate: 0.84
(2 rows)
采样信息:
gaussdb=# select * from gs_stat_freespace(16814, 0, 'i', 80, false);
oid |
info
-------+-----------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------
16815 | Average page stat info: page_header_size: 24, tuple has storage: 215.93, normal tuple: 215.93, dead tuple: 0.00, unused tuple: 0.50, redirecte
d tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 2087.43. Freespace stat info: nblocks: 14, approximate_table_size: 91476 (B
ytes), approximate expansion rate: 1.25.
16816 | Average page stat info: page_header_size: 24, tuple has storage: 243.28, normal tuple: 243.28, dead tuple: 0.00, unused tuple: 0.24, redirecte
d tuple: 0.00, td_count: 0.00, potential_freespace: 0.00, actual_freespace: 1323.03. Freespace stat info: nblocks: 29, approximate_table_size: 213237 (
Bytes), approximate expansion rate: 1.11.
(2 rows)
异常输入:
gaussdb=# select * from gs_stat_freespace(16814, 0, 'k', 0, false);
ERROR: wrong relation_type input, type should be either 'r' or 'i'
gaussdb=# select * from gs_stat_freespace(16814, 0, 'i', 600, false);
ERROR: wrong sample_ratio input, sample_ratio should be an integer between 0 and 100
gaussdb=# select * from gs_stat_freespace(16814, 0, 'r', 60, false);
ERROR: "t_a_idx" is not a ordinary relation or toast relation.