计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
华为云Astro轻应用
华为云Astro大屏应用
开源治理服务 CodeArts Governance
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
本文导读

展开导读

其他函数

更新时间:2025-05-29 GMT+08:00

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

表1 gs_validate_node_conn函数参数说明

参数类型

参数名

类型

描述

输入参数

validate_type

cstring

指定入参类型:

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

输入参数

validate_node_name

cstring

指定节点名称。

输出参数

pid

bigint

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

输出参数

sessionid

bigint

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

输出参数

node_name

text

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

pgxc_pool_connection_status()

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

返回值类型:boolean

pg_nodes_memory()

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

返回值类型:record

table_skewness(text)

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

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

表2 错误表pg_catalog.pgxc_copy_error_log信息

列名称

类型

描述

relname

character varying

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

begintime

timestamp with time zone

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

filename

character varying

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

lineno

bigint

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

rawrecord

text

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

detail

text

详细错误信息。

pg_stat_get_data_senders()

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

返回值类型:record

textlen()

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

返回值类型:int

threadpool_status()

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

返回值类型:record

get_local_active_session()

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

返回值类型:record

dbe_perf.get_global_active_session()

描述:提供所有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

表3 generate_wdr_report参数说明

参数

说明

取值范围

begin_snap_id

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

-

end_snap_id

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

-

report_type

指定生成report的类型。

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

report_scope

指定生成report的范围。

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

node_name

  • 在report_scope设置为node时,需要将该参数设置为对应节点的名称,节点名称可以通过执行“SELECT * FROM pg_node_env;”查询获取。
  • 在report_scope为cluster时,该参数值可以省略,或设置为空或NULL。
  • cluster:省略/空/NULL。
  • node:GaussDB中的节点名称。

generate_wdr_db_report(db_name cstring, begin_snap_id bigint, end_snap_id bigint, report_type cstring, report_scope cstring, node_name cstring)

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

返回值类型:record

表4 generate_wdr_db_report参数说明

参数

说明

取值范围

db_name

指定database名称。

-

begin_snap_id

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

-

end_snap_id

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

-

report_type

指定生成report的类型。

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

report_scope

指定生成report的范围。

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

node_name

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

create_wdr_snapshot()

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

返回值类型:text

kill_snapshot()

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

返回值类型:void

dbe_perf.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

表5 reset_unique_sql参数说明

参数

类型

描述

scope

text

清理范围类型:

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

'LOCAL' - 清理本节点。

clean_type

text

'BY_USERID' - 按用户ID来进行清理Unique SQL。

'BY_CNID' - 按CN的ID来进行清理Unique SQL。

'ALL' - 全部清理。

clean_value

int8

具体清理type对应的清理值。如果第二个参数为ALL,则第三个参数不起作用,可以取任意值。

wdr_xdb_query(db_name_str text, query text)

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

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

返回值类型:record

pg_wlm_jump_queue(pid int)

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

返回值类型:boolean

  • true:成功。
  • false:失败。

gs_wlm_switch_cgroup(pid int, cgroup text)

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

返回值类型:boolean

  • true:成功。
  • false:失败。

pv_session_memctx_detail(threadid tid, MemoryContextName text)

描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/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

表6 local_aio_completer_stat返回值说明

参数

类型

描述

node_name

text

当前实例名称。

tid

int8

AIO Completer线程id。

thread_type

text

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

aio_submitted_num

int8

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

aio_completed_num

int8

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

aio_incompleted_num

int8

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

slot_count_left

int8

空闲slot数量。

local_aio_slot_usage_status()

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

返回值类型:record

表7 local_aio_slot_usage_status返回值说明

参数

类型

描述

node_name

text

当前实例名称。

slot_id

int4

槽位id。

slot_type

char

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

status

bool

槽位占用状态。

buffer_id

int8

该槽位对应的buffer id。

relfilenode_blocknum

text

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

lsn

int8

页面对应的LSN。

submitted_time

int8

页面异步提交时的时间。

elapsed_time

int8

页面已经等待的时间。

remote_aio_completer_stat()

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

返回值类型:record

表8 remote_aio_completer_stat返回值说明

参数

类型

描述

node_name

text

其他实例名称。

tid

int8

AIO Completer线程id。

thread_type

text

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

aio_submitted_num

int8

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

aio_completed_num

int8

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

aio_incompleted_num

int8

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

slot_count_left

int8

空闲slot数量。

remote_aio_slot_usage_status()

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

返回值类型:record

表9 remote_aio_slot_usage_status返回值说明

参数

类型

描述

node_name

text

其他实例名称。

slot_id

int4

槽位id。

slot_type

char

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

status

bool

槽位占用状态。

buffer_id

int8

该槽位对应的buffer id。

relfilenode_blocknum

text

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

lsn

int8

页面对应的LSN。

submitted_time

int8

页面异步提交时的时间。

elapsed_time

int8

页面已经等待的时间。

gs_get_io_type()

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

返回值类型:text

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

local_bgwriter_stat()

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

返回值类型:record

local_candidate_stat()

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

返回值类型:record

local_ckpt_stat()

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

返回值类型:record

local_double_write_stat()

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

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

comm_client_info()

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

返回值类型:setof record

pg_get_flush_lsn()

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

返回值类型:text

pg_get_sync_flush_lsn()

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

返回值类型:text

pgxc_wlm_rebuild_user_resource_pool()

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

返回值类型:boolean

locktag_decode(locktag text)

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

示例:

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

返回值类型:text

disable_conn(disconn_mode text, host text, port integer)

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

返回值类型:void

表11 disable_conn参数说明

参数

类型

描述

disconn_mode

text

DN连接模式:

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

host

text

DN的IP。

port

integer

DN的端口号。

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

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

返回值类型:record

表12 dbe_perf.get_global_full_sql_by_timestamp参数说明

参数

类型

描述

start_timestamp

timestamp with time zone

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

end_timestamp

timestamp with time zone

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

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

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

返回值类型:record

表13 dbe_perf.get_global_slow_sql_by_timestamp参数说明

参数

类型

描述

start_timestamp

timestamp with time zone

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

end_timestamp

timestamp with time zone

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

statement_detail_decode(detail text, format text, pretty boolean)

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

返回值类型:text

表14 statement_detail_decode参数说明

参数

类型

描述

detail

text

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

format

text

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

pretty

boolean

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

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

pgxc_get_csn(tid)

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

返回值类型:int8

pgxc_get_csn(tid,bucketid)

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

返回值类型:int8

get_global_user_transaction()

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

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

pg_collation_for()

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

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

返回值类型:text

pgxc_unlock_for_sp_database(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

表15 dynamic_func_control参数说明

参数

类型

描述

scope

text

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

function_name

text

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

action

text

当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN:
  • TRACK - 开始记录归一化SQL的全量SQL信息。
  • UNTRACK - 取消记录归一化SQL的全量SQL信息。
  • LIST - 列取当前TRACK的归一化SQL的信息。
  • CLEAN - 清理记录当前归一化SQL的信息。

params

text[]

当function_name为'STMT'时,对应不同的action时,对应的params设置如下:
  • TRACK - '{"归一化SQLID", "L0/L1/L2"}'
  • UNTRACK - '{"归一化SQLID"}'
  • LIST - '{}'
  • CLEAN - '{}'

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

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

返回值类型:text

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

表16 gs_parse_page_bypath参数说明

参数

类型

描述

path

text

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

blocknum

bigint

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

relation_type

text

  • heap(astore表)。
  • uheap(ustore表)。
  • btree(BTree索引)。
  • ubtree(UBTree索引)。
  • vm(astore普通表的visibility map)。
  • fsm(行存表的freespace map文件)。
  • clog(事务状态日志commit log)。
  • csnlog(快照时间戳日志commit sequence number log)。
  • undo_slot(事务槽信息)。
  • undo_record(undo 记录信息)。
  • indexurq(indexurq页面)。

read_memory

boolean

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

正常使用示例:

# 解析BTree索引文件中所有页面的信息内容
# 函数调用前请依据参数说明中的内容确保文件路径真实存在
gaussdb=# SELECT gs_parse_page_bypath('base/16603/16394', -1, 'btree', false);
                        gs_parse_page_bypath                        
--------------------------------------------------------------------
 gs_log_dir/dump/1663_16603_16394_-1.page
(1 row)

# 解析vm文件中所有block的可见性结果
gaussdb=# SELECT gs_parse_page_bypath('base/12828/16771_vm', -1, 'vm', false);
                         gs_parse_page_bypath                          
-----------------------------------------------------------------------
 gs_log_dir/dump/1663_12828_16771_-1_vm.page
(1 row)

# 解析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

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

表17 gs_xlogdump_tablepath参数说明

参数

类型

描述

path

text

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

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

blocknum

bigint

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

relation_type

text

  • heap(astore 表)
  • btree(BTree 索引)
  • segment(段页式)

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

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

返回值类型:text

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

表18 gs_xlogdump_parsepage_tablepath参数说明

参数

类型

描述

path

text

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

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

blocknum

bigint

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

relation_type

text

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

read_memory

boolean

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

gs_shared_storage_xlogdump_lsn(start_lsn text, end_lsn text, xlog_file_path text)

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

返回值类型:text

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

表19 gs_shared_storage_xlogdump_lsn参数说明

参数

类型

描述

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

表20 gs_shared_storage_ctlinfo参数说明

参数类型

参数名

类型

描述

输出参数

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

表21 gs_index_recycle_queue参数说明

参数

类型

描述

oid

oid

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

type

int

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

blkno

uint32

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

说明:

该函数功能在分布式版本上不支持,有报错提示。

gs_stat_wal_entrytable(int64 idx)

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

返回值类型:record

表22 gs_stat_wal_entrytable参数说明

参数类型

参数名

类型

描述

输入参数

idx

int64

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

输出参数

idx

uint64

记录对应数组中的下标。

输出参数

endlsn

uint64

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

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

输出参数

lrc

int32

记录对应的LRC。

输出参数

status

uint32

当前版本已废弃,查询结果显示为0。

gs_walwriter_flush_position()

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

返回值类型:record

表23 gs_walwriter_flush_position参数说明

参数类型

参数名

类型

描述

输出参数

last_flush_status_entry

int32

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

输出参数

last_scanned_lrc

int32

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

输出参数

curr_lrc

int32

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

输出参数

curr_byte_pos

uint64

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

输出参数

prev_byte_size

uint32

上一个xlog记录的长度。

输出参数

flush_result

uint64

当前全局xlog刷盘的位置。

输出参数

send_result

uint64

当前主机上xlog发送位置。

输出参数

shm_rqst_write_pos

uint64

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

输出参数

shm_rqst_flush_pos

uint64

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

输出参数

shm_result_write_pos

uint64

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

输出参数

shm_result_flush_pos

uint64

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

输出参数

curr_time

text

当前时间。

gs_walwriter_flush_stat(int operation)

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

返回值类型:record

表24 gs_walwriter_flush_stat参数说明

参数类型

参数名

类型

描述

输入参数

operation

int

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

输出参数

write_times

uint64

Xlog调用write接口的次数。

输出参数

sync_times

uint64

Xlog调用sync接口次数。

输出参数

total_xlog_sync_bytes

uint64

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

输出参数

total_actual_xlog_sync_bytes

uint64

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

输出参数

avg_write_bytes

uint32

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

输出参数

avg_actual_write_bytes

uint32

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

输出参数

avg_sync_bytes

uint32

平均每次请求sync的xlog量。

输出参数

avg_actual_sync_bytes

uint32

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

输出参数

total_write_time

uint64

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

输出参数

total_sync_time

uint64

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

输出参数

avg_write_time

uint32

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

输出参数

avg_sync_time

uint32

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

输出参数

curr_init_xlog_segno

uint64

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

输出参数

curr_open_xlog_segno

uint64

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

输出参数

last_reset_time

text

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

输出参数

curr_time

text

当前时间。

pg_ls_tmpdir()

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

参数:nan

返回值类型:record

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

参数类型

参数名

类型

描述

输出参数

name

text

文件名称。

输出参数

size

int8

文件大小(单位:byte)。

输出参数

modification

timestamptz

文件最后修改时间。

pg_ls_tmpdir(oid)

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

参数:oid

返回值类型:record

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

参数类型

参数名

类型

描述

输入参数

oid

oid

表空间id。

输出参数

name

text

文件名称。

输出参数

size

int8

文件大小(单位:byte)。

输出参数

modification

timestamptz

文件最后修改时间。

pg_ls_waldir()

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

参数:nan

返回值类型:record

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

参数类型

参数名

类型

描述

输出参数

name

text

文件名称。

输出参数

size

int8

文件大小(单位:byte)。

输出参数

modification

timestamptz

文件最后修改时间。

gs_stat_anti_cache()

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

参数:nan

返回值类型:record

参数类型

参数名

类型

描述

输出参数

table_nums

int8

分区数量。

输出参数

table_init_size

int8

分区初始大小。

输出参数

table_max_size

int8

分区大小上限。

输出参数

anti_cache_upper_limit_size

int8

AntiCache大小上限。

输出参数

anti_cache_size

int8

实时AntiCache大小。

输出参数

anti_cache_max_table_size

int8

实时最大分区大小。

输出参数

anti_cache_min_table_size

int8

实时最小分区大小。

gs_stat_vlog_buffer()

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

参数:nan

返回值类型:record

参数类型

参数名

类型

描述

输出参数

vbuffer_write_offset

int8

vlog写入位置。

输出参数

vbuffer_flushed_offset

int8

vlog刷盘位置。

输出参数

max_vbuffer_flushed_value

int8

vlog下刷最大字节数。

输出参数

min_vbuffer_flushed_vlaue

int8

vlog下刷最小字节数。

输出参数

ave_vbuffer_flushed_vlaue

int8

vlog下刷平均字节数。

输出参数

vbuffer_flush_latency

int8

vlog下刷时延统计。

gs_stat_vlog_related_io()

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

参数:nan

返回值类型:record

参数类型

参数名

类型

描述

输出参数

read_data_iops

float8

每秒读文件的页面数。

输出参数

vlog_read_iops

float8

每秒读vlog的页面数。

输出参数

vlog_write_iops

float8

每秒写vlog的页面数。

gs_write_term_log(void)

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

返回值类型:Boolean

gs_stat_space(bool init)

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

返回值类型:record

参数类型

参数名

类型

描述

输入参数

init

bool

是否重置已统计的数据。

输出参数

access_func

int8

relation_get_buffer_for_utuple接口访问总次数。

输出参数

cache_blk

int8

relation_get_buffer_for_utuple获取缓存次数。

输出参数

cache_succ

int8

relation_get_buffer_for_utuple获取缓存成功次数。

输出参数

nblk_first

int8

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

输出参数

nblk_first_succ

int8

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

输出参数

nblk_second

int8

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

输出参数

nblk_second_succ

int8

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

输出参数

fsm_first

int8

第一次访问FSM次数。

输出参数

fsm_first_success

int8

第一次访问FSM成功次数。

输出参数

fsm_rewrite

int8

FSM回写次数。

输出参数

fsm_second

int8

第二次访问FSM次数。

输出参数

fsm_second_sucess

int8

第二次访问FSM成功次数。

输出参数

prune_count

int8

relation_get_buffer_for_utuple中Prune次数。

输出参数

prune_space

int8

relation_get_buffer_for_utuple中Prune总空间。

输出参数

coprune_count

int8

联合清理执行次数。

输出参数

coprune_scan_blocks

int8

联合清理扫描总页数。

输出参数

coprune_prune_count

int8

联合清理Prune次数。

输出参数

coprune_prune_space

int8

联合清理Prune总空间。

输出参数

con_extend_count

int8

并发扩页数量。

输出参数

con_extend_time

int8

并发扩页总时间。

输出参数

single_extend_time

int8

单一扩页次数。

示例:

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

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

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

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

返回值类型:record

参数类型

参数

类型

描述

输入参数

directory_path

text

备份文件所在目录。

输入参数

backup_path

text

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

输入参数

blocknum

bigint

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

输入参数

relation_type

text

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

输入参数

xlog_path

text

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

输入参数

lsn

text

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

输出参数

output_filename

text

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

输出参数

output_lsn

text

最后一次页面重放的LSN。

输出参数

corruption_desc

text

页面受损情况描述。

gs_xlogdump_bylastlsn(last_lsn text, blocknum bigint, relation_type text)

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

返回值类型:text

参数类型

参数名

类型

描述

输入参数

last_lsn

text

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

输入参数

blocknum

bigint

指定页面的逻辑块号。

参数范围:-1~MaxBlockNumber。

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

输入参数

relation_type

text

指定解析页面的类型。

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

输出参数

output_filepath

text

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

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

dbe_perf.get_full_sql_by_parent_id_and_timestamp(parent_id bigint, start_timestamp timestamp with time zone, end_timestamp timestamp with time zone)

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

返回值类型:record

参数

类型

描述

parent_id

bigint

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

start_timestamp

timestamp with time zone

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

end_timestamp

timestamp with time zone

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

示例:

gaussdb=# CREATE TABLE test(a int,b int);
NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default.
HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE
gaussdb=# INSERT INTO test values(1,1);
INSERT 0 1
gaussdb=# CREATE PROCEDURE mypro1() as num int;
gaussdb$# begin
gaussdb$# INSERT INTO test values(2,2);
gaussdb$# DELETE FROM test where a = 2;
gaussdb$# end;
gaussdb$# /
CREATE PROCEDURE

--打开参数,跟踪存储过程子语句。
gaussdb=# SET instr_unique_sql_track_type = 'all';
SET

--打开参数,dbe_perf.statement_history表生成全量语句记录。
gaussdb=# SET track_stmt_stat_level = 'L0,L0';
SET

gaussdb=# CALL mypro1();
 mypro1
--------

(1 row)

gaussdb=# SET track_stmt_stat_level = 'off,L0';
SET

gaussdb=# SET instr_unique_sql_track_type = 'top';
SET

--查询关键信息,作为函数参数使用。
gaussdb=# SELECT query,unique_query_id,start_time,finish_time FROM dbe_perf.statement_history;
                query                 | unique_query_id |          start_time           |          finish_time
--------------------------------------+-----------------+-------------------------------+-------------------------------
 set track_stmt_stat_level = 'L0,L0'; |       636388010 | 2023-06-02 17:40:49.176155+08 | 2023-06-02 17:40:49.176543+08
 call mypro1();                       |       536458473 | 2023-06-02 17:40:59.028144+08 | 2023-06-02 17:40:59.032027+08
 delete from test where a = ?         |       583323884 | 2023-06-02 17:40:59.029955+08 | 2023-06-02 17:40:59.031577+08
 insert into test values(?,?)         |       769279931 | 2023-06-02 17:40:59.029219+08 | 2023-06-02 17:40:59.029947+08
(4 rows)

--通过外层语句的unique_query_id、外层语句的开始和结束时间作为参数,查询该时间段内,指定存储过程及其子语句的信息。
gaussdb=# SELECT query FROM dbe_perf.get_full_sql_by_parent_id_and_timestamp(536458473,'2023-06-02 17:40:59.028144+08','2023-06-02 17:40:59.032027+08');
            query
------------------------------
 call mypro1();
 delete from test where a = ?
 insert into test values(?,?)
(3 rows)

gaussdb=# DROP PROCEDURE mypro1();
DROP PROCEDURE
gaussdb=# DROP TABLE test;
DROP TABLE

gs_index_dump_read(int8 reset, text out_type)

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

返回值类型:record

参数类型

参数名

类型

描述

输入参数

reset

int8

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

输入参数

out_type

text

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

输出参数

relfilenode

oid

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

输出参数

max_count

int8

最大buffer read值。

输出参数

ave_count

int8

平均buffer read值。

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

pg_get_ilmdef(pidx integer)

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

返回值类型:text

参数类型

参数名

类型

描述

输入参数

pidx

integer

ilm策略的索引。

输出参数

ilm_policy_info

text

指定ilm策略的策略信息。

gs_shared_storage_flush_stat(int operation)

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

返回值类型:record

参数类型

参数名

类型

描述

输入参数

operation

int

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

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

输出参数

stat_switch

bool

统计开关是否打开。

输出参数

write_times

uint64

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

输出参数

avg_write_bytes

uint32

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

输出参数

avg_actual_write_bytes

uint32

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

输出参数

total_write_time

uint64

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

输出参数

avg_write_time

uint32

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

输出参数

avg_write_speed

uint32

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

输出参数

avg_actual_write_speed

uint32

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

输出参数

total_write_sleep_time

uint64

shared_storage_xlog_copy线程总睡眠时间。

输出参数

read_times

uint64

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

输出参数

avg_read_bytes

uint32

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

输出参数

avg_actual_read_bytes

uint32

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

输出参数

total_read_time

uint64

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

输出参数

avg_read_time

uint32

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

输出参数

avg_read_speed

uint32

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

输出参数

avg_actual_read_speed

uint32

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

输出参数

total_read_sleep_time

uint64

walreceiver线程总睡眠时间。

输出参数

stat_start_time

timestamptz

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

输出参数

stat_end_time

timestamptz

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

示例:

gaussdb=# SELECT * FROM gs_shared_storage_flush_stat(1);
 stat_switch | write_times | avg_write_bytes | avg_actual_write_bytes | total_write_time | avg_write_time | avg_write_speed | avg_actual_write_speed | total_write_sleep_time | read_times | avg
_read_bytes | avg_actual_read_bytes | total_read_time | avg_read_time | avg_read_speed | avg_actual_read_speed | total_read_sleep_time |        stat_start_time        |         stat_end_time

-------------+-------------+-----------------+------------------------+------------------+----------------+-----------------+------------------------+------------------------+------------+----
------------+-----------------------+-----------------+---------------+----------------+-----------------------+-----------------------+-------------------------------+------------------------
-------
 t           |       43644 | 8624            | 8624                   |        263922553 | 6047           | 1392            | 1392                   |            26918503404 |       7451 | 140
13          | 14013                 |         5321082 | 714           | 19163          | 19163                 |                     0 | 2023-12-18 07:18:39.766855+08 | 2023-12-18 16:29:22.757
535+08
(1 row)

gs_stat_freespace(Oid relid, Oid partid, char type, int sample_ratio)

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

返回值类型:record

参数类型

参数

类型

描述

输入参数

relation_oid

OID

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

输入参数

partation_oid

OID

分区表/二级分区表/LOCAL分区索引的OID。

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

输入参数

relation_type

CHAR

表类型:

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

输入参数

sample_ratio

INT8

采样比例,取值范围为 0-100。

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

输入参数

read_memory

BOOL

是否从内存读取页面:

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

输出参数

OID

OID

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

输出参数

INFO

TEXT

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

示例:

-- 查询普通表信息
建表语句:
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.

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容