统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器线程号为参数,其范围从1到当前活跃服务器的数目。
=================================================================================================================
-
pg_stat_get_db_conflict_tablespace(oid)
描述:由于恢复与数据库中删除的表空间发生冲突而取消的查询数。
返回值类型:bigint。
-
pg_control_group_config()
描述:在当前节点上打印cgroup配置。该函数需要SYSADMIN权限的用户才能够执行。
返回值类型:record。
-
pg_stat_get_db_stat_reset_time(oid)
描述:上次重置数据库统计信息的时间。首次连接到每个数据库期间初始化为系统时间。当您在数据库上调用pg_stat_reset以及针对其中的任何表或索引执行pg_stat_reset_single_table_counters时,重置时间都会更新。
返回值类型:timestamptz。
-
pg_stat_get_function_total_time(oid)
描述:该函数花费的总挂钟时间,以微秒为单位。包括花费在此函数调用其它函数上的时间。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_returned(oid)
描述:当前事务中参数为表时通过顺序扫描读取的行数,或参数为索引时返回的索引条目数。
返回值类型:bigint。
-
pg_stat_get_xact_numscans(oid)
描述:当前事务中参数为表时执行的顺序扫描次数,或参数为索引时执行的索引扫描次数。
返回值类型:bigint。
-
pg_stat_get_xact_blocks_fetched(oid)
描述:当前事务中对表或索引的磁盘块获取请求数。
返回值类型:bigint。
-
pg_stat_get_xact_blocks_hit(oid)
描述:当前事务中对缓存中找到的表或索引的磁盘块获取请求数。
返回值类型:bigint。
-
pg_stat_get_xact_function_calls(oid)
描述:在当前事务中调用该函数的次数。
返回值类型:bigint。
-
pg_stat_get_xact_function_self_time(oid)
描述:在当前事务中仅花费在此函数上的时间。不包括花费在此函数内部调用其它函数上的时间。
返回值类型:bigint。
-
pg_stat_get_xact_function_total_time(oid)
描述:当前事务中该函数所花费的总挂钟时间(以微秒为单位)。包括花费在此函数内部调用其它函数上的时间。
返回值类型:bigint。
-
pg_lock_status()
描述:查询打开事务所持有的锁信息,所有用户均可执行该函数。
返回值类型:返回字段可参考PG_LOCKS视图返回字段,该视图是通过查询本函数得到的结果。
-
bucket_lock_status()
描述:查询打开事务所持有的bucket锁信息,所有用户均可执行该函数。
返回值类型:返回字段可参考GS_BUCKET_LOCKS视图返回字段中除node_name之外的字段。
-
gs_bucket_lock_status()
描述:查询所有节点中的打开事务所持有的bucket锁信息,所有用户均可执行该函数。
返回值类型:返回字段可参考GS_BUCKET_LOCKS视图返回字段,该视图是通过查询本函数得到的结果。
-
gs_lwlock_status()
描述:查询数据库系统内所有轻量级锁信息,包括等锁和持锁信息,所有用户均可执行该函数。
返回值类型:setofrecord。
-
pg_stat_get_wal_senders()
描述:在主机端查询walsender信息。
返回值类型:setofrecord。
-
pgxc_get_senders_catchup_time()
描述:在CN实例查询集群中是否存在处于日志追赶状态的备DN,以及追赶状态详情。
返回值类型:setofrecord。
-
pg_stat_get_stream_replications()
描述:查询主备复制状态。
返回值类型:setofrecord。
返回值说明如下表所示。
-
pg_stat_get_db_numbackends(oid)
描述:处理该数据库活跃的服务器线程数目。
返回值类型:integer。
-
pg_stat_get_db_xact_commit(oid)
描述:数据库中已提交事务的数量。
返回值类型:bigint。
-
pg_stat_get_db_xact_rollback(oid)
描述:数据库中回滚事务的数量。
返回值类型:bigint。
-
pg_stat_get_db_blocks_fetched(oid)
描述:数据库中磁盘块抓取请求的总数。
返回值类型:bigint。
-
pg_stat_get_db_blocks_hit(oid)
描述:数据库在缓冲区中找到的磁盘块抓取请求的总数。
返回值类型:bigint。
-
pg_stat_get_db_tuples_returned(oid)
描述:为数据库返回的Tuple数。
返回值类型:bigint。
-
pg_stat_get_db_tuples_fetched(oid)
描述:为数据库中获取的Tuple数。
返回值类型:bigint。
-
pg_stat_get_db_tuples_inserted(oid)
描述:在数据库中插入Tuple数。
返回值类型:bigint。
-
pg_stat_get_db_tuples_updated(oid)
描述:在数据库中更新的Tuple数。
返回值类型:bigint。
-
pg_stat_get_db_tuples_deleted(oid)
描述:数据库中删除Tuple数。
返回值类型:bigint。
-
pg_stat_get_db_conflict_lock(oid)
描述:数据库中锁冲突的数量。
返回值类型:bigint。
-
pg_stat_get_db_deadlocks(oid)
描述:数据库中死锁的数量。
返回值类型:bigint。
-
pg_stat_get_numscans(oid)
描述:如果参数是一个表,则顺序扫描读取的行数目。如果参数是一个索引,则返回索引行的数目。
返回值类型:bigint。
-
pg_stat_get_role_name(oid)
描述:根据用户oid获取用户名。仅SYSADMIN和MONADMIN用户可以访问。
返回值类型:text。
示例:
gaussdb=# SELECT pg_stat_get_role_name(10); pg_stat_get_role_name ----------------------- aabbcc (1 row) -
pg_stat_get_tuples_returned(oid)
描述:如果参数是一个表,则顺序扫描读取的行数目。如果参数是一个索引,则返回的索引行的数目。
返回值类型:bigint。
-
pg_stat_get_tuples_fetched(oid)
描述:如果参数是一个表,则位图扫描抓取的行数目。如果参数是一个索引,则用简单索引扫描在原表中抓取的行数目。
返回值类型:bigint。
-
pg_stat_get_tuples_inserted(oid)
描述:插入表中行的数量。
返回值类型:bigint。
-
pg_stat_get_tuples_updated(oid)
描述:在表中已更新行的数量。
返回值类型:bigint。
-
pg_stat_get_tuples_deleted(oid)
描述:从表中删除行的数量。
返回值类型:bigint。
-
pg_stat_get_tuples_changed(oid)
描述:该表上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint。
-
pg_stat_get_tuples_hot_updated(oid)
描述:表热更新的行数。
返回值类型:bigint。
-
pg_stat_get_live_tuples(oid)
描述:表活行数。
返回值类型:bigint。
-
pg_stat_get_dead_tuples(oid)
描述:表死行数。
返回值类型:bigint。
-
pg_stat_get_blocks_fetched(oid)
描述:表或者索引的磁盘块抓取请求的数量。
返回值类型:bigint。
-
pg_stat_get_blocks_hit(oid)
描述:在缓冲区中找到的表或者索引的磁盘块请求数目。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_fetched(oid)
描述:事务中扫描的tuple行数。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_inserted(oid)
描述:表相关的活跃子事务中插入的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_deleted(oid)
描述:表相关的活跃子事务中删除的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_hot_updated(oid)
描述:表相关的活跃子事务中热更新的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_tuples_updated(oid)
描述:表相关的活跃子事务中更新的tuple数。
返回值类型:bigint。
-
pg_stat_get_last_vacuum_time(oid)
描述:用户在该表上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz。
-
pg_stat_get_last_autovacuum_time(oid)
描述:autovacuum守护线程在该表上最后一次启动清理的时间。
返回值类型:timestamptz。
-
pg_stat_get_vacuum_count(oid)
描述:用户在该表上启动清理的次数。
返回值类型:bigint。
-
pg_stat_get_autovacuum_count(oid)
描述:autovacuum守护线程在该表上启动清理的次数。
返回值类型:bigint。
-
pg_stat_get_last_analyze_time(oid)
描述:用户在该表上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz。
-
pg_stat_get_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该表上最后一次启动分析的时间。
返回值类型:timestamptz。
-
pg_stat_get_analyze_count(oid)
描述:用户在该表上启动分析的次数。
返回值类型:bigint。
-
pg_stat_get_autoanalyze_count(oid)
描述:autovacuum守护线程在该表上启动分析的次数。
返回值类型:bigint。
-
pg_total_autovac_tuples(bool)
描述:返回total autovac相关的tuple记录,如nodename、nspname、relname以及各类tuple的IUD信息,入参为:是否查询relation信息。
返回值类型:setofrecord。
返回参数说明如下。
-
pg_total_gsi_autovac_tuples(bool)
描述:返回total autovac相关的tuple记录,如nodename、nspname、relname以及GSI自上次analyze之后发生变化的记录数,入参为:是否查询relation信息。该函数用于辅助autovacuum全局二级索引,不建议用户使用。
返回值类型:setofrecord。
-
pg_autovac_status(oid)
描述:返回和autovac状态相关的参数信息,如nodename、nspname、relname、analyze、vacuum设置,analyze/vacuum阈值,analyze/vacuum tuple数等。仅SYSADMIN可以使用该函数。
返回值类型:setofrecord。
返回值参数说明如下。
-
pg_autovac_timeout(oid)
描述:返回某个表做autovac连续超时的次数,表信息非法或node信息异常返回NULL。
返回值类型:bigint。
-
pg_autovac_coordinator(oid)
描述:返回对某个表做autovac的coordinator名称,表信息非法或node信息异常返回NULL。
返回值类型:text。
-
pg_stat_get_last_data_changed_time(oid)
描述:对于在表上的修改insert/update/delete/truncate和在表的分区(partition/subpartition)上的修改exchange/truncate/drop,在该表上最后一次操作的时间,PG_STAT_ALL_TABLES视图last_data_changed列的数据是通过该函数求值,在表数量很大的场景中,通过视图获取表数据最后修改时间的性能较差,建议直接使用该函数获取表数据的最后修改时间。入参是表的oid。
返回值类型:timestamptz。
-
pg_stat_set_last_data_changed_time(oid)
描述:手动设置该表上最后一次insert/update/delete, exchange/truncate/drop partition操作的时间。
返回值类型:void。
-
pg_stat_get_last_updated(oid, text)
描述:返回DBE_PERF.stat_all_tables, DBE_PERF.stat_all_indexes, DBE_PERF.statio_all_indexes, DBE_PERF.statio_all_tables视图中对各表各项监控指标字段更新的时间。入参1为表的oid,入参2为text类型,取值为"stat_table", "stat_index", "stat_io"。
返回值类型:timestamptz。
-
pg_backend_pid()
描述:当前会话的服务器线程的线程ID。
返回值类型:integer。
-
pg_stat_get_activity(integer)
描述:返回一个关于带有特殊PID的后台线程的记录信息,当参数为NULL时,则返回每个活动的后台线程的记录。返回结果不包含connection_info列。初始用户、系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
示例:
gaussdb=# SELECT * FROM pg_stat_get_activity(139881386280704); datid | pid | sessionid | usesysid | application_name | state | query | waiting | xact_start | query_start | backend_start | state_change | client_addr | client_hostname | client_port | enqueue | query_id | srespool | global_sessionid | unique_sql_id | trace_id -------+-----------------+-----------+----------+------------------+--------+------------------------------------------------------+---------+-------------------------------+-------------------------------+----- --------------------------+------------------------------+-------------+-----------------+-------------+---------+-------------------+--------------+------------------+---------------+---------- 16545 | 139881386280704 | 69 | 10 | gsql | active | select * from pg_stat_get_activity(139881386280704); | f | 2022-01-18 19:43:05.167718+08 | 2022-01-18 19:43:05.167718+08 | 2022 -01-18 19:42:33.513507+08 | 2022-01-18 19:43:05.16773+08 | | | -1 | | 72620543991624410 | default_pool | 1938253334#69#0 | 3751941862 | (1 row)返回值类型:setofrecord。
返回参数说明如下。
-
pg_stat_get_activity_with_conninfo(integer)
描述:返回一个关于带有特殊PID的后台线程的记录信息,当参数为NULL时,则返回每个活动的后台线程的记录。初始用户、系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
返回值类型:setofrecord。
-
gs_get_explain(integer)
描述:返回一个关于指定PID的后台线程的运行态计划,PID不能为空。该功能生效的必要条件是GUC参数track_activities为on,支持语句的范围为可以explain且其计划不包含STREAM算子的SQL。详细说明如下:
- 若GUC参数plan_collect_thresh=-1,则该函数的返回结果一直为空。
- 若GUC参数plan_collect_thresh=0,若当前SQL执行时间大于等于GUC参数log_min_duration_statement指定值,且计划中所有算子处理的tuple数量和大于等于10000时,开始收集运行态计划;且后续每当所有算子处理tuple数量的和的增量超过10000时,进行一次收集。
- 若GUC参数plan_collect_thresh>0,会按照该参数指定的阈值进行增量收集运行态计划。
- 另外,该函数只能看到在CN生成的计划,若查看在DN生成的计划,需要参考函数gs_get_dn_explain。
返回值类型:text,具体各个字段的类型和含义如下:
-
gs_get_dn_explain(text, bigint)
描述:返回一个关于指定node name(来自pgxc_node系统表的node_name字段)和global session id的DN的后台线程的运行态计划,global session id不能为空。该功能生效的必要条件是GUC参数track_activities为on,支持语句的范围为可以explain且其计划不包含STREAM算子的SQL。详细说明如下:
-
同函数gs_get_explain,其中global session id是由pg_stat_activity字段global_sessionid计算而来。global_sessionid格式如下:{number2}#{number3},样例为1938253334:1#0,那么gs_get_dn_explain函数的参数值应为{number1}。
-
另外该函数需要ADMIN或MONADMIN权限才可执行。
-
-
pg_stat_get_activity_ng(integer)
描述:返回一个关于带有特殊PID的活跃后台线程记录信息,当参数为NULL时,则返回每个活跃的后台线程的记录。系统管理员和MONADMIN可以查看所有的数据,普通用户只能查询自己的结果。
返回值类型:setofrecord。
-
pg_stat_get_function_calls(oid)
描述:函数已被调用次数。
返回值类型:bigint。
-
pg_stat_get_function_self_time(oid)
描述:只有在此函数所花费的时间。此函数嵌套调用其它函数所花费的时间被排除在外。
返回值类型:bigint。
-
pg_stat_get_backend_idset()
描述:设置当前活动的服务器线程数(从1到活动服务器线程的数量)。
返回值类型:setofinteger。
-
pg_stat_get_backend_pid(integer)
描述:给定的服务器线程的线程ID。
返回值类型:bigint。
-
pg_stat_get_backend_dbid(integer)
描述:给定服务器线程的数据库ID。
返回值类型:oid。
-
pg_stat_get_backend_userid(integer)
描述:给定服务器线程的用户ID,本函数仅系统管理员可调用。
返回值类型:oid。
-
pg_stat_get_backend_activity(integer)
描述:给定服务器线程的当前活动查询,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:text。
-
pg_stat_get_backend_waiting(integer)
描述:如果给定服务器线程在等待某个锁,并且调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才返回真。
返回值类型:Boolean。
-
pg_stat_get_backend_activity_start(integer)
描述:给定服务器线程当前正在执行的查询的起始时间,仅在调用者是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone。
-
pg_stat_get_backend_xact_start(integer)
描述:给定服务器线程当前正在执行的事务的开始时间,但只有当前用户是系统管理员或被查询会话的用户,并且打开track_activities的时候才能获得结果。
返回值类型:timestampwithtimezone。
-
pg_stat_get_backend_start(integer)
描述:给定服务器线程启动的时间,如果当前用户不是系统管理员或被查询的后端的用户,则返回NULL。
返回值类型:timestampwithtimezone。
-
pg_stat_get_backend_client_addr(integer)
描述:连接到给定客户端后端的IP地址。如果是通过Unix域套接字连接的则返回NULL;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:inet。
-
pg_stat_get_backend_client_port(integer)
描述:连接到给定客户端后端的TCP端口。如果是通过Unix域套接字连接的则返回-1;如果当前用户不是系统管理员或被查询会话的用户,也返回NULL。
返回值类型:integer。
-
pg_stat_get_bgwriter_timed_checkpoints()
描述:后台写线程开启定时检查点的时间(因为checkpoint_timeout时间已经过期了)。
返回值类型:bigint。
-
pg_stat_get_bgwriter_requested_checkpoints()
描述:后台写线程开启基于后端请求的检查点的时间,因为已经超过了checkpoint_segments或因为已经执行了CHECKPOINT。
返回值类型:bigint。
-
pg_stat_get_bgwriter_buf_written_checkpoints()
描述:在检查点期间后台写线程写入的缓冲区数目。
返回值类型:bigint。
-
pg_stat_get_bgwriter_buf_written_clean()
描述:为日常清理脏块,后台写线程写入的缓冲区数目。
返回值类型:bigint。
-
pg_stat_get_bgwriter_maxwritten_clean()
描述:后台写线程停止清理扫描的时间,因为已经写入了更多的缓冲区(相比bgwriter_lru_maxpages参数声明的缓冲区数)。
返回值类型:bigint。
-
pg_stat_get_buf_written_backend()
描述:后端线程写入的缓冲区数,因为它们需要分配一个新的缓冲区。
返回值类型:bigint。
-
pg_stat_get_buf_alloc()
描述:分配的总缓冲区数。
返回值类型:bigint。
-
pg_stat_clear_snapshot()
描述:清理当前的统计快照。该函数仅SYSADMIN和MONADMIN可以执行。
返回值类型:void。
-
pg_stat_reset()
描述:为当前数据库重置统计计数器为0(需要系统管理员权限)。
返回值类型:void。
-
gs_stat_reset()
描述:将各节点上的为当前数据库重置统计计数器为0(需要系统管理员权限)。
返回值类型:void。
-
pg_stat_reset_shared(text)
描述:重置shared cluster每个节点当前数据统计计数器为0(需要系统管理员权限)。
返回值类型:void。
-
pg_stat_reset_single_table_counters(oid)
描述:为当前数据库中的一个表或索引重置统计为0(需要系统管理员权限)。
返回值类型:void。
-
pg_stat_reset_single_function_counters(oid)
描述:为当前数据库中的一个函数重置统计为0(需要系统管理员权限)。
返回值类型:void。
-
pgxc_fenced_udf_process(integer)
描述:查看UDF Master和Work线程数,仅SYSADMIN和MONADMIN用户有权限执行。入参为1时查看master线程数,入参为2时查看worker线程数,入参为3时终止所有worker线程。
返回值类型:text。
-
fenced_udf_process(integer)
描述:查看本地UDF Master和Work线程数。入参为1时查看master线程数,入参为2时查看worker线程数,入参为3时终止所有worker线程。
返回值类型:text。
-
total_cpu()
描述:获取当前节点使用的cpu时间,单位是jiffies。
返回值类型:bigint。
-
total_memory()
描述:获取当前节点使用的虚拟内存大小,单位KB。
返回值类型:bigint。
-
pgxc_terminate_all_fenced_udf_process()
描述:Kill所有的UDF Work线程,仅SYSADMIN和MONADMIN用户有权限执行。
返回值类型:bool。
-
gs_get_nodegroup_tablecount(name)
描述:得到一个节点组中所有数据库包含的用户表数目。
返回值类型:integer。
-
gs_check_tables_distribution()
描述: 检查当前系统中用户表的分布是否存在不一致,如果返回空记录,表示不存在不一致。该函数应该在非扩缩容重分布时调用。
返回值类型:record。
-
pg_stat_bad_block(text, int, int, int, int, int, timestamp with time zone, timestamp with time zone)
描述:获取当前节点自启动后,读取出现Page的损坏信息。
返回值类型:record。
-
pgxc_stat_bad_block(text, int, int, int, int, int, timestamp with time zone, timestamp with time zone)
描述:获取集群所有节点自启动后,读取出现Page的损坏信息。
返回值类型:record。
-
pg_stat_bad_block_clear()
描述:清理节点记录的读取出现的Page损坏信息(需要系统管理员权限)。
返回值类型:void。
-
pgxc_stat_bad_block_clear
描述:清理集群所有节点记录的读取出现的Page损坏信息(需要系统管理员权限)。
返回值类型:void。
-
pgxc_log_comm_status(void)
描述:当使用sctp(由于规格变更,当前版本已经不再支持本特性,请不要使用)通信模式时,PGXC系统视图将datanode的通信层状态输出到各个日志文件中。
返回值类型:void。
-
gs_respool_exception_info(pool text)
描述:查看某个资源池关联的查询规则信息。
返回值类型:record。
-
gs_control_group_info(pool text)
描述:查看资源池关联的控制组信息。该函数需要SYSADMIN权限的用户才能够执行。
返回值类型:record。
-
local_xlog_redo_statics()
-
描述:返回本节点已经回放的各个类型的日志统计信息(仅在备机上有有效数据)。
返回值如下:
表18 local_xlog_redo_statics返回参数说明
字段名
描述
xlog_type
日志类型。
rmid
resource manager id。
info
xlog operation。
num
日志个数。
extra
针对page回放日志和xact日志有有效值。
- 如果是page页回放日志类型则表示从磁盘读取page的个数。
- 如果是xact日志类型则表示删除文件的个数。
-
remote_bgwriter_stat()
描述:显示整个集群所有实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息(本节点除外、DN上不可使用)。
返回值类型:record。
表19 remote_bgwriter_stat参数说明
参数
类型
描述
node_name
text
实例名称。
bgwr_actual_flush_total_num
bigint
从启动到当前时间bgwriter线程总计刷脏页数量。
bgwr_last_flush_num
integer
bgwriter线程上一批刷脏页数量。
candidate_slots
integer
当前候选buffer链中页面个数。
get_buffer_from_list
bigint
buffer淘汰从候选buffer链中获取页面的次数。
get_buf_clock_sweep
bigint
buffer淘汰从原淘汰方案中获取页面的次数。
示例:
remote_bgwriter_stat函数查询bgwriter线程刷页信息。
gaussdb=# SELECT * FROM remote_bgwriter_stat(); node_name | bgwr_actual_flush_total_num | bgwr_last_flush_num | candidate_slots | get_buffer_from_list | get_buf_clock_sweep -----------+-----------------------------+---------------------+-----------------+----------------------+--------------------- datanode3 | 0 | 0 | 266232 | 404 | 0 datanode2 | 0 | 0 | 266232 | 424 | 0 datanode1 | 0 | 0 | 266232 | 393 | 0 (3 rows) -
gs_stack()
描述:显示线程调用栈。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数:tid,线程id。tid是可选参数,指定tid参数时,函数返回tid对应线程调用栈;当不指定tid参数时,函数返回所有线程的调用栈。
返回值:当指定tid时,返回值为text;当不指定tid时,返回值为setof record。
示例:
获取指定线程调用栈。
gaussdb=# SELECT * FROM gs_stack(139663481165568); gs_stack -------------------------------------------------------------------- __poll + 0x2d + WaitLatchOrSocket(Latch volatile*, int, int, long) + 0x29f + WaitLatch(Latch volatile*, int, long) + 0x2e + JobScheduleMain() + 0x90f + int GaussDbThreadMain<(knl_thread_role)9>(knl_thread_arg*) + 0x456+ InternalThreadFunc(void*) + 0x2d + ThreadStarterFunc(void*) + 0xa4 + start_thread + 0xc5 + clone + 0x6d + (1 row)获取所有线程的调用栈。
gaussdb=# SELECT * FROM gs_stack(); -[ RECORD 1 ]------------------------------------------------------------------------------------------------------- tid | 139670364324352 lwtid | 308 stack | __poll + 0x2d | CommWaitPollParam::caller(int (*)(pollfd*, unsigned long, int), unsigned long) + 0x34 | int comm_socket_call<CommWaitPollParam, int (*)(pollfd*, unsigned long, int)>(CommWaitPollParam*, int (*)(pollfd*, unsigned long , int)) + 0x28 | comm_poll(pollfd*, unsigned long, int) + 0xb1 | ServerLoop() + 0x72b | PostmasterMain(int, char**) + 0x314e | main + 0x617 | __libc_start_main + 0xf5 | 0x55d38f8db3a7 [ RECORD 2 ]------------------------------------------------------------------------------------------------------- tid | 139664851859200 lwtid | 520 stack | __poll + 0x2d | WaitLatchOrSocket(Latch volatile*, int, int, long) + 0x29f | SysLoggerMain(int) + 0xc86 | int GaussDbThreadMain<(knl_thread_role)17>(knl_thread_arg*) + 0x45d | InternalThreadFunc(void*) + 0x2d | ThreadStarterFunc(void*) + 0xa4 | start_thread + 0xc5 | clone + 0x6d -
gs_perf_start()
描述:调用perf_event_open,采集各个线程的调用栈及各函数运行时间。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数说明如下:
参数名称
描述
类型
范围
duration
采集堆栈时长(单位为秒,如输入浮点型,会对浮点型小数点后第一位进行四舍五入后取整处理)。
integer
1~60
freq
采集堆栈频率(可选参数,单位为HZ,默认为100)。
integer
10~1000
返回值类型:text
示例:
设置频率为100HZ,采集10s堆栈信息。
gaussdb=# SELECT * FROM gs_perf_start(10, 100); gs_perf_start --------------------- Perf start succeed. (1 row)gs_perf_start在采集过程中,需要申请环形buffer,该buffer的大小受操作系统中/proc/sys/kernel/perf_event_mlock_kb控制。如果采集过程出现”perf mmap failed”错误,可以通过调整/proc/sys/kernel/perf_event_mlock_kb的大小,再重新开始采集。
-
gs_perf_query()
描述:归并各个线程的函数调用栈并求和函数运行时间,显示聚集后的结果。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数:nan
返回值类型:setof record。
函数返回字段说明:
名称
类型
描述
backtrace
text
堆栈名称(带树状结构)。
period
bigint
堆栈的执行时间。
level
integer
堆栈所在堆栈调用树的层级。
sequence
integer
堆栈调用树排序后的顺序。
thread_name
text
该堆栈所在的线程名称。
overhead
float
该堆栈执行所占时间百分比。
示例:
查询采集到的堆栈信息。
gaussdb=# SELECT * FROM gs_perf_query() WHERE overhead > 2 AND level < 10; backtrace | period | level | sequence | thread_name | overhead -------------------------------------------------------------------------------+-------------+-------+----------+---------------+---------- root +| 74140000000 | 0 | 1 | root | 100 | | | | | worker +| 69930000000 | 1 | 2 | worker | 94.32 | | | | | |── start_thread +| 67620000000 | 2 | 3 | worker | 91.21 | | | | | | └── ThreadStarterFunc +| 67620000000 | 3 | 4 | worker | 91.21 | | | | | | └── internal_thread_func +| 67620000000 | 4 | 5 | worker | 91.21 | | | | | | └── int gauss_db_thread_main +| 67620000000 | 5 | 6 | worker | 91.21 | | | | | | └── backend_run +| 67620000000 | 6 | 7 | worker | 91.21 | | | | | | |── PostgresMain +| 67520000000 | 7 | 8 | worker | 91.07 | | | | | | | |── exec_simple_query +| 64800000000 | 8 | 9 | worker | 87.4 | | | | | | | | |── OpFusion::opfusion_process +| 30130000000 | 9 | 10 | worker | 40.64 | | | | | | | | |── pg_analyze_and_rewrite +| 11290000000 | 9 | 1405 | worker | 15.23 | | | | | | | | |── pg_plan_queries +| 9550000000 | 9 | 2660 | worker | 12.88 | | | | | | | | |── PortalRun +| 4680000000 | 9 | 4310 | worker | 6.31 | | | | | | | | |── finish_xact_command +| 3120000000 | 9 | 4923 | worker | 4.21 | | | | | | | | |── pg_parse_query +| 1520000000 | 9 | 5262 | worker | 2.05 | | | | | | | | |── OpFusion::opfusion_factory +| 1500000000 | 9 | 5374 | worker | 2.02 | | | | | txnsnapworker +| 1640000000 | 1 | 6770 | txnsnapworker | 2.21 | | | | | |── start_thread +| 1620000000 | 2 | 6771 | txnsnapworker | 2.19 | | | | | | └── ThreadStarterFunc +| 1620000000 | 3 | 6772 | txnsnapworker | 2.19 | | | | | | └── internal_thread_func +| 1620000000 | 4 | 6773 | txnsnapworker | 2.19 | | | | | | └── int gauss_db_thread_main +| 1620000000 | 5 | 6774 | txnsnapworker | 2.19 | | | | | | └── txn_snap_cap_worker_main +| 1620000000 | 6 | 6775 | txnsnapworker | 2.19 | | | | | | └── PostgresInitializer::InitTxnSnapWorker +| 1620000000 | 7 | 6776 | txnsnapworker | 2.19 | | | | | | |── PostgresInitializer::SetDatabase +| 1600000000 | 8 | 6777 | txnsnapworker | 2.16 | | | | | | | └── PostgresInitializer::SetDatabaseByName+| 1600000000 | 9 | 6778 | txnsnapworker | 2.16 -
gs_perf_report()
描述:根据执行gs_perf_start函数采集到的堆栈数据,生成图形化火焰图文件,保存在$GAUSSLOG/gs_flamegraph/{datanode}路径下。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数:nan
返回值类型:text
示例:
生成火焰图火焰图文件。
gaussdb=# SELECT * FROM gs_perf_report(); gs_perf_report ------------------------------------------------------------------------- Perf report succeed, flamegraph file: flamegraph-2023-11-26_164802.html (1 row) -
gs_perf_clean()
描述:清理perf产生的数据。查询该函数需要有SYSADMIN权限或者MONADMIN权限。
参数:nan
返回值类型:text。
示例:
清理采集到的堆栈信息。
gaussdb=# SELECT * FROM gs_perf_clean(); gs_perf_clean --------------------- Perf clean succeed. (1 row) -
gs_tpworker_execstmt_stat()
描述:描述语句的运行时信息,SYSADMIN和MONADMIN用户执行则显示全部正在执行的语句的信息,普通用户查询只能查询自己执行的SQL语句的信息。
返回值类型:setof record。
名称
类型
描述
db_oid
oid
用户会话在后台连接到的数据库OID。
db_name
name
用户会话在后台连接到的数据库名称。
threadpool_worker
varchar
线程所属的numagroup和线程的ID,格式如下:numagroup_threadid。
thread_id
bigint
线程ID。
session_id
bigint
会话ID。
query_id
bigint
正在执行的SQL语句的ID。
query_text
text
正在执行的SQL语句内容。
unique_sql_id
bigint
SQL语句生成的唯一id。
client_hostname
text
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。
client_app_name
text
客户端app的名字。
stmt_slow_time_threshold
int
单位毫秒,SQL语句被标记为慢SQL的预设超时时间。
stmt_start_time
timestamp with time zone
语句执行的开始时间。
stmt_elapse_time
int
距离查询开始执行时已经过去的时间。
stmt_control_status
varchar
当前语句状态:
- Waiting:等待状态,session接入未获得线程执行。
- Running:当前语句正常执行。
- Control:当前语句进入了资源管控阶段。
stmt_control_rule
text
当前语对应的慢SQL管控规则。
stmt_control_iostat
text
当前语句的iops值和最大iops上限。格式如下:curVal/maxVal。
stmt_control_memstat
text
当前字段预留,暂不支持。
stmt_control_cpustat
text
当前字段预留,暂不支持。
stmt_control_netstat
text
当前字段预留,暂不支持。
-
gs_tpworker_execslot_stat()
描述:描述线程的运行时信息,SYSADMIN和MONADMIN用户执行则显示全部线程的信息,普通用户查询只能查询自己执行的SQL语句所在的线程的信息。
返回值类型:setof record。
名称
类型
描述
numagroup
int
当前线程所属的numagroup。
worker_id
int
当前线程的ID。
worker_bind_type
text
线程绑定方式numabind, cpubind, allbind,nobind。
worker_cpu_affinity
text
线程和CPU的亲和性,即线程可以调度的cpu核数范围。
worker_status
varchar
当前线程状态:
- Waiting:等待状态,session接入未获得线程执行。
- Running:当前语句正常执行。
- Control:当前语句进入了资源管控阶段。
served_query_id
bigint
正在执行的SQL语句的ID。
served_query_text
text
正在执行的SQL语句内容。
-
gs_session_all_settings(sessionid bigint)
描述:查询本节点上sessionid对应的session的全量GUC参数配置。需要SYSADMIN或者MONADMIN权限执行。
入参说明:sessionid,会话ID。
返回值类型:setof record。
函数返回字段说明如下:
名称
类型
描述
name
text
参数名称。
setting
text
参数当前值。
unit
text
参数的隐式单位。
示例:
gaussdb=# SELECT sessionid FROM pg_stat_activity WHERE usename = 'testuser'; sessionid ----------- 788861 (1 row) gaussdb=# SELECT * FROM gs_session_all_settings(788861) WHERE name = 'work_mem'; name | setting | unit ----------+---------+------ work_mem | 131072 | kB (1 row) -
gs_session_all_settings()
描述:查询本节点上所有session的全量GUC参数配置。需要SYSADMIN或者MONADMIN权限执行。
返回值类型:setof record。
名称
类型
描述
sessionid
bigint
会话的ID。
pid
bigint
后端线程的ID。
name
text
参数名称。
setting
text
参数当前值。
unit
text
参数的隐式单位。
示例:
gaussdb=# SELECT * FROM gs_session_all_settings() WHERE name = 'work_mem'; sessionid | pid | name | setting | unit -----------------+-----------------+----------+---------+------ 140550214145792 | 96974 | work_mem | 65536 | kB 140550214145792 | 96971 | work_mem | 65536 | kB 140549731735296 | 140549731735296 | work_mem | 65536 | kB 140549764413184 | 140549764413184 | work_mem | 65536 | kB (4 rows) -
gs_local_wal_preparse_statistics()
描述:查询本节点上日志预解析线程最近一次启动,预解析日志的情况。需要SYSADMIN权限执行。
返回值类型:setof record。
名称
类型
描述
preparser_term
text
最近一次预解析日志得到的最大term值。
preparser_start_time
timestamptz
最近一次预解析启动时间。
preparser_end_time
timestamptz
最近一次预解析结束时间。
preparser_start_location
text
最近一次预解析日志起始位置。
preparser_end_location
text
最近一次预解析日志结束位置。
preparser_total_bytes
int8
最近一次预解析日志量,单位:byte。
preparser_speed
int8
最近一次预解析速度,单位:byte/ms。
is_valid
bool
最近一次预解析结果是否可以用于选主。
示例:
gaussdb=# SELECT * FROM gs_local_wal_preparse_statistics(); preparser_term | preparser_start_time | preparser_end_time | preparser_start_location | preparser_end_location | preparser_total_bytes | preparser_speed | is_valid ----------------+-------------------------------+-------------------------------+--------------------------+------------------------+-----------------------+-----------------+---------- 3107 | 2023-02-01 17:04:23.367946+08 | 2023-02-01 17:04:25.354434+08 | 00000003/C3EEA660 | 00000004/0BE60738 | 1207394520 | 1207394520 | f (1 row) -
gs_hot_standby_space_info()
描述:查询standby_read/base_page,standby_read/block_info_meta,standby_read/lsn_info_meta文件夹中的文件总数和总大小。
返回值类型:setof record。
名称
类型
描述
base_page_file_num
xid
bage_page_file的总数量。
base_page_total_size
xid
bage_page_file的总大小。
lsn_info_meta_file_num
xid
lsn_info_meta_file的总数量。
lsn_info_meta_total_size
xid
lsn_info_meta_file的总大小。
block_info_meta_file_num
xid
block_info_meta_file的总数量。
block_info_meta_total_size
xid
block_info_meta_file的总大小。
示例:
gaussdb=# SELECT * FROM gs_hot_standby_space_info(); base_page_file_num | base_page_total_size | lsn_info_meta_file_num | lsn_info_meta_total_size | block_info_meta_file_num | block_info_meta_total_size --------------------+----------------------+------------------------+--------------------------+--------------------------+---------------------------- 6 | 163840 | 6 | 3136 | 16 | 147456 (1 row) -
exrto_file_read_stat()
描述:查询备机读新增的base page file、lsn info meta file和block info meta file三种类型的文件磁盘访问次数和访问总时延。连接备DN查询,其他情况查询结果为0。
返回值类型:setof record。
名称
类型
描述
lsn_info_page_disk_read_counter
int8
lsn info meta file的磁盘访问次数。
lsn_info_page_disk_read_dur
int8
lsn info meta file的磁盘访问总时延。
blk_info_meta_disk_read_counter
int8
block info meta file的磁盘访问次数。
blk_info_meta_disk_read_dur
int8
block info meta file的磁盘访问总时延。
base_page_read_disk_counter
int8
base page file的磁盘访问次数。
base_page_read_disk_dur
int8
base page file的磁盘访问总时延。
示例:
gaussdb=# SELECT * FROM exrto_file_read_stat(); lsn_info_page_disk_read_counter | lsn_info_page_disk_read_dur | blk_info_meta_disk_read_counter | blk_info_meta_disk_read_dur | base_page_read_disk_counter | base_page_read_disk_dur ---------------------------------+-----------------------------+---------------------------------+-----------------------------+-----------------------------+------------------------- 14987 | 92313 | 23879 | 129811 | 0 | 0 (1 row) -
gs_exrto_recycle_info()
描述:查询资源回收位置,其中包括每个线程的回收lsn,全局回收的lsn,查询线程最旧的快照的lsn。连接备DN查询,其他情况查询结果为0。
返回值类型:setof record。
名称
类型
描述
page_redo_worker_thread_id
text
redo线程的回收lsn位置,其中thread_id为redo线程的线程id。
global_recycle_lsn
text
全局回收位置的lsn。
exrto_snapshot_oldest_lsn
text
查询线程的最旧的快照lsn。
示例:
gaussdb=# SELECT * FROM gs_exrto_recycle_info(); thread_id | recycle_lsn ----------------------------------+------------- page_redo_worker_140148895381248 | 0/7B4552E0 page_redo_worker_140148872312576 | 0/7B4535B8 global_recycle_lsn | 0/7B4535B8 exrto_snapshot_oldest_lsn | 0/8488E6D0 (4 rows) -
gs_stat_get_db_conflict_all(oid)
入参说明:dbid(oid)为数据库的oid。
描述:查询发送回放冲突信号的数量。
返回值类型:setof record。
名称
类型
描述
conflict_all
int8
发送回放冲突信号的总数量。
conflict_tablespace
int8
发送tablespace类型回放冲突信号的数量。
conflict_lock
int8
发送lock类型回放冲突信号的数量。
conflict_snapshot
int8
发送snapshot类型回放冲突信号的数量。
conflict_bufferpin
int8
发送bufferpin类型回放冲突信号的数量。
conflict_startup_deadlock
int8
发送startup_deadlock类型回放冲突信号的数量。
conflict_truncate
int8
发送truncate类型回放冲突信号的数量。
conflict_standby_query_timeout
int8
发送standby_query_timeout类型回放冲突信号的数量。
conflict_force_recycle
int8
发送force_recycle类型回放冲突信号的数量。
示例:
gaussdb=# SELECT * FROM gs_stat_get_db_conflict_all(12738); conflict_all | conflict_tablespace | conflict_lock | conflict_snapshot | conflict_bufferpin | conflict_startup_deadlock | conflict_truncate | conflict_standby_query_timeout | conflict_force_recycle --------------+---------------------+---------------+-------------------+--------------------+---------------------------+-------------------+--------------------------------+------------------------ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row) -
gs_redo_stat_info()
描述:查询回放信息,包括回放线程的buffer命中率、执行unlink_rels文件数量、极致RTO场景下回放线程读取buffer时产生io操作的waitevent信息以及wal_read_from_write_buffer的waitevent信息。需要连接备DN查询。
返回值类型:setof record。
名称
类型
描述
buffer_hit_rate
float8
回放线程的buffer命中率。
ddl_unlink_nrels_count
int8
回放ddl操作执行unlink rel文件的数量。
read_buffer_io_counter
int8
极致RTO场景下回放线程读取buffer时产生io操作的waitevent触发次数。
read_buffer_io_total_dur
int8
极致RTO场景下回放线程读取buffer时产生io操作的waitevent总用时。
read_buffer_io_avg_dur
int8
极致RTO场景下回放线程读取buffer时产生io操作的waitevent平均用时。
read_buffer_io_min_dur
int8
极致RTO场景下回放线程读取buffer时产生io操作的waitevent最小用时。
read_buffer_io_max_dur
int8
极致RTO场景下回放线程读取buffer时产生io操作的waitevent最大用时。
read_wal_buf_counter
int8
极致RTO场景下wal_read_from_write_buffer的waitevent触发次数。
read_wal_buf_total_dur
int8
极致RTO场景下wal_read_from_write_buffer的waitevent总用时。
read_wal_buf_avg_dur
int8
极致RTO场景下wal_read_from_write_buffer的waitevent平均用时。
read_wal_buf_min_dur
int8
极致RTO场景下wal_read_from_write_buffer的waitevent最小用时。
read_wal_buf_max_dur
int8
极致RTO场景下wal_read_from_write_buffer的waitevent最大用时。
示例:
gaussdb=# SELECT * FROM gs_redo_stat_info(); -[ RECORD 1 ]------------+---------- buffer_hit_rate | 70.5707 ddl_unlink_nrels_count | 3 read_buffer_io_counter | 1732 read_buffer_io_total_dur | 2850806 read_buffer_io_avg_dur | 1645 read_buffer_io_min_dur | 3 read_buffer_io_max_dur | 981639 read_wal_buf_counter | 9779 read_wal_buf_total_dur | 193612470 read_wal_buf_avg_dur | 19798 read_wal_buf_min_dur | 3 read_wal_buf_max_dur | 1914777 -
gs_recovery_conflict_waitevent_info()
描述:查询处理回放冲突的函数的waitevent相关信息。需要连接备DN查询。
返回值类型:setof record。
名称
类型
描述
conflict_lock_counter
int8
处理lock类型回放冲突的触发次数。
conflict_lock_total_dur
int8
处理lock类型回放冲突的总用时。
conflict_lock_avg_dur
int8
处理lock类型回放冲突的平均用时。
conflict_lock_min_dur
int8
处理lock类型回放冲突的最小用时。
conflict_lock_max_dur
int8
处理lock类型回放冲突的最大用时。
conflict_snapshot_counter
int8
处理snapshot类型回放冲突的触发次数。
conflict_snapshot_total_dur
int8
处理snapshot类型回放冲突的总用时。
conflict_snapshot_avg_dur
int8
处理snapshot类型回放冲突的平均用时。
conflict_snapshot_min_dur
int8
处理snapshot类型回放冲突的最小用时。
conflict_snapshot_max_dur
int8
处理snapshot类型回放冲突的最大用时。
conflict_tablespace_counter
int8
处理tablespace类型回放冲突的触发次数。
conflict_tablespace_total_dur
int8
处理tablespace类型回放冲突的总用时。
conflict_tablespace_avg_dur
int8
处理tablespace类型回放冲突的平均用时。
conflict_tablespace_min_dur
int8
处理tablespace类型回放冲突的最小用时。
conflict_tablespace_max_dur
int8
处理tablespace类型回放冲突的最大用时。
conflict_database_counter
int8
处理database类型回放冲突的触发次数。
conflict_database_total_dur
int8
处理database类型回放冲突的总用时。
conflict_database_avg_dur
int8
处理database类型回放冲突的平均用时。
conflict_database_min_dur
int8
处理database类型回放冲突的最小用时。
conflict_database_max_dur
int8
处理database类型回放冲突的最大用时。
conflict_truncate_counter
int8
处理truncate类型回放冲突的触发次数。
conflict_truncate_total_dur
int8
处理truncate类型回放冲突的总用时。
conflict_truncate_avg_dur
int8
处理truncate类型回放冲突的平均用时。
conflict_truncate_min_dur
int8
处理truncate类型回放冲突的最小用时。
conflict_truncate_max_dur
int8
处理truncate类型回放冲突的最大用时。
conflict_standby_query_timeout_counter
int8
处理standby_query_timeout类型回放冲突的触发次数。
conflict_standby_query_timeout_total_dur
int8
处理standby_query_timeout类型回放冲突的总用时。
conflict_standby_query_timeout_avg_dur
int8
处理standby_query_timeout类型回放冲突的平均用时。
conflict_standby_query_timeout_min_dur
int8
处理standby_query_timeout类型回放冲突的最小用时。
conflict_standby_query_timeout_max_dur
int8
处理standby_query_timeout类型回放冲突的最大用时。
conflict_force_recycle_counter
int8
处理force_recycle类型回放冲突的触发次数。
conflict_force_recycle_total_dur
int8
处理force_recycle类型回放冲突的总用时。
conflict_force_recycle_avg_dur
int8
处理force_recycle类型回放冲突的平均用时。
conflict_force_recycle_min_dur
int8
处理force_recycle类型回放冲突的最小用时。
conflict_force_recycle_max_dur
int8
处理force_recycle类型回放冲突的最大用时。
示例:
gaussdb=# SELECT * FROM gs_recovery_conflict_waitevent_info(); -[ RECORD 1 ]----------------------------+------ conflict_lock_counter | 0 conflict_lock_total_dur | 0 conflict_lock_avg_dur | 0 conflict_lock_min_dur | 0 conflict_lock_max_dur | 0 conflict_snapshot_counter | 0 conflict_snapshot_total_dur | 0 conflict_snapshot_avg_dur | 0 conflict_snapshot_min_dur | 0 conflict_snapshot_max_dur | 0 conflict_tablespace_counter | 0 conflict_tablespace_total_dur | 0 conflict_tablespace_avg_dur | 0 conflict_tablespace_min_dur | 0 conflict_tablespace_max_dur | 0 conflict_database_counter | 0 conflict_database_total_dur | 0 conflict_database_avg_dur | 0 conflict_database_min_dur | 0 conflict_database_max_dur | 0 conflict_truncate_counter | 6 conflict_truncate_total_dur | 35872 conflict_truncate_avg_dur | 5978 conflict_truncate_min_dur | 5130 conflict_truncate_max_dur | 7459 conflict_standby_query_timeout_counter | 0 conflict_standby_query_timeout_total_dur | 0 conflict_standby_query_timeout_avg_dur | 0 conflict_standby_query_timeout_min_dur | 0 conflict_standby_query_timeoutmax_dur | 0 conflict_force_recycle_counter | 0 conflict_force_recycle_total_dur | 0 conflict_force_recycle_avg_dur | 0 conflict_force_recycle_min_dur | 0 conflict_force_recycle_max_dur | 0 -
gs_display_delay_ddl_info()
描述:查看备机中延迟删除的文件信息。
返回值类型:setof record。
名称
类型
描述
type
INT4
删除操作的对象是表或数据库。
lsn
TEXT
标识特定日志文件记录在此日志文件中的位置。
tablespace
INT4
数据库中用于存储表和索引的物理空间。
database
INT4
该数据库的物理存储位置。
relation
INT4
数据库中的对象,可以是表、视图、索引的物理位置。
bucketid
INT4
指定关系对象所属的bucket。
opt
INT4
压缩表相关属性。
forknum
INT4
主体命名之后的后缀命名,通过主体命名和后缀命名,可以找到唯一的物理文件。
示例:
gaussdb=# SELECT * FROM gs_display_delay_ddl_info(); type | lsn | tablespace | database | relation | bucketid | opt | forknum ------+-----+------------+----------+----------+----------+-----+--------- (0 rows)
分区表统计信息函数
-
gs_stat_get_partition_stats(oid)
描述:获取特定分区的统计信息。
返回值类型:record。
-
gs_stat_get_xact_partition_stats(oid)
描述:获取特定分区的事务中统计信息。
返回值类型:record。
-
gs_stat_get_all_partitions_stats()
描述:获取所有分区的统计信息。
返回值类型:setof record。
-
gs_stat_get_xact_all_partitions_stats()
描述:获取所有分区的事务中统计信息。
返回值类型:setof record。
-
gs_statio_get_all_partitions_stats()
描述:获取所有分区的I/O统计信息。
返回值类型:setof record。
上述五个函数示例:
运行时统计信息上报是异步的,且基于UDP协议,后台线程处理可能存在延迟和丢包,此处示例预期仅供参考。
事务外统计信息查询:
gaussdb=# CREATE TABLE part_tab1 gaussdb-# ( gaussdb(# a int, b int gaussdb(# ) gaussdb-# PARTITION BY RANGE(b) gaussdb-# ( gaussdb(# PARTITION P1 VALUES LESS THAN(10), gaussdb(# PARTITION P2 VALUES LESS THAN(20), gaussdb(# PARTITION P3 VALUES LESS THAN(MAXVALUE) gaussdb(# ); CREATE TABLE gaussdb=# CREATE TABLE subpart_tab1 gaussdb-# ( gaussdb(# month_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# dept_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# user_no VARCHAR2 ( 30 ) NOT NULL , gaussdb(# sales_amt int gaussdb(# ) gaussdb-# PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) gaussdb-# ( gaussdb(# PARTITION p_201901 VALUES LESS THAN( '201903' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) gaussdb(# ), gaussdb(# PARTITION p_201902 VALUES LESS THAN( '201904' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) gaussdb(# ) gaussdb(# ); CREATE TABLE gaussdb=# CREATE INDEX index_part_tab1 ON part_tab1(b) LOCAL gaussdb-# ( gaussdb(# PARTITION b_index1, gaussdb(# PARTITION b_index2, gaussdb(# PARTITION b_index3 gaussdb(# ); CREATE INDEX gaussdb=# CREATE INDEX idx_user_no ON subpart_tab1(user_no) LOCAL; CREATE INDEX gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# ANALYZE part_tab1; ANALYZE gaussdb=# VACUUM part_tab1; VACUUM gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# ANALYZE subpart_tab1; ANALYZE gaussdb=# VACUUM subpart_tab1; VACUUM gaussdb=# SELECT * FROM gs_stat_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+ ------------+-------------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+------------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 5 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.293965+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688861+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.291022+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688843+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.288037+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688829+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.285311+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688802+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16954 | public | part_tab1 | p3 | | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.490636+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540115+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16953 | public | part_tab1 | p2 | | 4 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.487914+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540098+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16952 | public | part_tab1 | p1 | | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 (7 rows) gaussdb=# SELECT * FROM gs_statio_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | t idx_blks_hit ---------------+------------+--------------+----------------+--------------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+-- ------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 8 | 2 | 21 | | | | 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 8 | 2 | 21 | | | | 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 8 | 2 | 21 | | | | 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 8 | 2 | 21 | | | | 16954 | public | part_tab1 | p3 | | 4 | 8 | 2 | 15 | | | | 16953 | public | part_tab1 | p2 | | 4 | 8 | 2 | 15 | | | | 16952 | public | part_tab1 | p1 | | 4 | 8 | 2 | 15 | | | | (7 rows) gaussdb=# SELECT * FROM gs_stat_get_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | last_data_changed | heap_blks_read | heap_blks_hit | idx_blks_re ad | idx_blks_hit | tup_fetch | block_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+------------+------------------------------+---------------------- --+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+------------------------+----------------+---------------+------------ ---+--------------+-----------+------------- 16952 | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+0 8 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 | 2000-01-01 08:00:00+08 | 4 | 8 | 2 | 21 | 0 | 12 (1 row)事务内统计信息查询:
gaussdb=# BEGIN; BEGIN gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# SELECT * FROM gs_stat_xact_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+--------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 4 | 1 | 2 | 1 | 1 | 1 | 1 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16954 | public | part_tab1 | p3 | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 16953 | public | part_tab1 | p2 | | 3 | 2 | 0 | 0 | 1 | 1 | 1 | 1 16952 | public | part_tab1 | p1 | | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 (7 rows) gaussdb=# SELECT * FROM gs_stat_get_xact_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | tup_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+----------- 16952 | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 | 0 (1 row) -
gs_stat_get_partition_analyze_count(oid)
描述:用户在该分区上启动分析的次数。
返回值类型:bigint。
-
gs_stat_get_partition_autoanalyze_count(oid)
描述:autovacuum守护线程在该分区上启动分析的次数。
返回值类型:bigint。
-
gs_stat_get_partition_autovacuum_count(oid)
描述:autovacuum守护线程在该分区上启动清理的次数。
返回值类型:bigint。
-
gs_stat_get_partition_last_analyze_time(oid)
描述:用户在该分区上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz。
-
gs_stat_get_partition_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动分析的时间。
返回值类型:timestamptz。
-
gs_stat_get_partition_last_autovacuum_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动清理的时间。
返回值类型:timestamptz。
-
gs_stat_get_partition_last_data_changed_time(oid)
描述:对于在分区上的修改insert/update/delete/truncate,在该表上最后一次操作的时间。当前暂不支持。
返回值类型:timestamptz。
-
gs_stat_get_partition_last_vacuum_time(oid)
描述:用户在该分区上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz。
-
gs_stat_get_partition_numscans(oid)
描述:分区顺序扫描读取的行数目。
返回值类型:bigint。
-
gs_stat_get_partition_tuples_returned(oid)
描述:分区顺序扫描读取的行数目。
返回值类型:bigint。
-
gs_stat_get_partition_tuples_fetched(oid)
描述:分区位图扫描抓取的行数目。
返回值类型:bigint
-
gs_stat_get_partition_vacuum_count(oid)
描述:用户在该分区上启动清理的次数。
返回值类型:bigint。
-
gs_stat_get_xact_partition_tuples_fetched(oid)
描述:事务中扫描的tuple行数。
返回值类型:bigint。
-
gs_stat_get_xact_partition_numscans(oid)
描述:当前事务中分区执行的顺序扫描次数。
返回值类型:bigint。
-
gs_stat_get_xact_partition_tuples_returned(oid)
描述:当前事务中分区通过顺序扫描读取的行数。
返回值类型:bigint。
-
gs_stat_get_partition_blocks_fetched(oid)
描述:分区的磁盘块抓取请求的数量。
返回值类型:bigint。
-
gs_stat_get_partition_blocks_hit(oid)
描述:在缓冲区中找到的分区的磁盘块请求数目。
返回值类型:bigint。
-
pg_stat_get_partition_tuples_inserted(oid)
描述:插入相应表分区中行的数量。
返回值类型:bigint。
-
pg_stat_get_partition_tuples_updated(oid)
描述:在相应表分区中已更新行的数量。
返回值类型:bigint。
-
pg_stat_get_partition_tuples_deleted(oid)
描述:从相应表分区中删除行的数量。
返回值类型:bigint。
-
pg_stat_get_partition_tuples_changed(oid)
描述:该表分区上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint。
-
pg_stat_get_partition_live_tuples(oid)
描述:分区表活行数。
返回值类型:bigint。
-
pg_stat_get_partition_dead_tuples(oid)
描述:分区表死行数。
返回值类型:bigint。
-
pg_stat_get_xact_partition_tuples_inserted(oid)
描述:表分区相关的活跃子事务中插入的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_partition_tuples_deleted(oid)
描述:表分区相关的活跃子事务中删除的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_partition_tuples_hot_updated(oid)
描述:表分区相关的活跃子事务中热更新的tuple数。
返回值类型:bigint。
-
pg_stat_get_xact_partition_tuples_updated(oid)
描述:表分区相关的活跃子事务中更新的tuple数。
返回值类型:bigint。
-
pg_stat_get_partition_tuples_hot_updated(oid)
描述:返回给定分区id的分区热更新元组数的统计。
参数:oid
返回值类型:bigint。
-
gs_wlm_respool_cpu_info()
描述:描述资源池的CPU资源限制和使用信息。
返回值类型:setof record。
名称
类型
描述
respool_name
name
资源池名称。
control_group
name
cgroup名称。
cpu_affinity
name
CPU绑定core的数值。
cpu_usage
integer
资源池的CPU使用率。
对于CN和DN混合部署的场景,CN和DN共享同一份CPU资源,因此CN和DN的cpu_usage显示相同,对于CN和DN独立部署场景,会独立显示。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CPU_INFO(); respool_name | control_group | cpu_affinity | cpu_usage ---------------+----------------------+--------------+----------- respool_cpu_2 | respool_cpu_2:Medium | 0-95 | 78 default_pool | DefaultClass:Medium | 0-32 | 65 (2 rows) -
gs_wlm_respool_connection_info()
描述:描述资源池的连接数资源限制和使用信息。
返回值类型:setof record。
名称
类型
描述
respool_name
name
资源池名称。
max_connections
name
资源池最大连接数。
curr_connections
integer
当前资源池已有连接数。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CONNECTION_INFO(); respool_name | max_connections | curr_connections ---------------+-----------------+------------------ respool1 | -1 | 0 default_pool | -1 | 1 (2 rows) -
gs_wlm_respool_memory_info()
描述:描述资源池的内存资源限制和使用信息。
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_dynamic_memory
integer
最大可使用的动态内存。
current_dynamic_memory
integer
当前已经使用的动态内存。
max_shared_memory
integer
最大可使用的共享内存。
current_shared_memory
integer
当前已经使用的共享内存。
shared_memory_hits_percent
integer
当前资源池所在的缓存命中率。
在出现资源池动态内存使用超过最大值时,可能会出现查询GUC参数current_dynamic_memory返回的结果大于max_dynamic_memory的情况,这属于正常现象,实际并未申请内存。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_MEMORY_INFO(); respool_name | max_dynamic_memory | current_dynamic_memory | max_shared_memory | current_shared_memory | shared_memory_hits_percent -----------------+--------------------+------------------------+-------------------+-----------------------+---------------------------- default_pool | -1 | 3383kB | -1 | 3848kB | 90 resource_pool_a | 30720kB | 0kB | -1 | 0kB | 0 (2 rows) -
gs_wlm_respool_concurrency_info()
描述:描述资源池中的并发数资源限制和使用信息。
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_concurrency
integer
资源池支持的最大并发数。
running_conurrency
integer
当前资源池正在执行的并发数。
waiting_concurrency
integer
当前资源池正在等待的并发数。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CONCURRENCY_INFO(); respool_name | max_concurrency | running_concurrency | waiting_concurrency -----------------+-----------------+---------------------+--------------------- default_pool | -1 | 1 | 0 resource_pool_a | -1 | 0 | 0 (2 rows) -
gs_wlm_respool_io_info()
描述:描述资源池的I/O资源限制和使用信息。
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
io_limits
integer
每秒触发I/O的次数上限。0表示不控制。
- 单位:GUC参数io_control_unit,I/O管控时用来对I/O次数进行计数的单位。1个io_control_unit次为1次IOPS。
io_priority
text
I/O利用率高达90%时,消耗I/O作业进行I/O资源管控时关联的优先级等级。None表示不控制。
current_iops
integer
当前I/O已经触发的次数。
当前I/O统计值存在偶尔超过上限的情况,与I/O统计算法有关,属于正常波动。
示例:
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_IO_INFO(); respool_name | io_limits | io_priority | current_iops -----------------+-----------+-------------+-------------- default_pool | 0 | None | 0 resource_pool_a | 0 | Low | 0 (2 rows) -
gs_wlm_user_space_info()
描述:描述用户的存储空间的使用信息。
返回值类型:setof record
名称
类型
描述
user_name
name
用户名称。
max_permanent_space
bigint
用户可使用的最大永久存储空间,单位:B。
current_ permanent_space
bigint
当前用户已使用的永久存储空间,单位:B。
max_temp_space
bigint
用户可使用的最大临时存储空间,单位:B。
current_ temp_space
bigint
当前用户已使用的临时存储空间,单位:B。
max_spill_space
bigint
用户可使用的最大算子落盘存储空间,单位:B。
current_ spill_space
bigint
当前用户已使用的算子落盘存储空间,单位:B。
示例:
gaussdb=# SELECT * FROM GS_WLM_USER_SPACE_INFO(); user_name | max_permanent_space | current_permanent_space | max_temp_space | current_temp_space | max_spill_space | current_spill_space -----------------------------+---------------------+-------------------------+----------------+--------------------+-----------------+--------------------- xy | -1 | 2464 | -1 | 0 | -1 | 0 (1 rows) -
gs_wlm_session_io_info()
描述:描述session的I/O的使用信息。
返回值类型:setof record
名称
类型
描述。
session_id
integer
会话ID。
io_limits
integer
每秒触发I/O的次数上限。0表示不控制。
- 单位:GUC参数io_control_unit,I/O管控时用来对I/O次数进行计数的单位。1个io_control_unit次为1次IOPS。
io_priority
text
I/O利用率高达90%时,消耗I/O作业进行I/O资源管控时关联的优先级等级。None表示不控制。
current_iops
integer
当前I/O已经触发的次数。
当前I/O统计值存在偶尔超过上限的情况,与I/O统计算法有关,属于正常波动。
wait_time
integer
当前I/O超过上限后等待的时间总和。
示例:
gaussdb=# SELECT * FROM GS_WLM_SESSION_IO_INFO(); session_id | io_limits | io_priority | current_iops | wait_time -----------------+-----------+-------------+--------------+----------- 139976325986048 | 10 | None | 0 | 2709 (1 row) -
gs_wlm_session_memory_info()
描述:描述session的内存的使用信息。
返回值类型:setof record
名称
类型
描述
session_id
integer
session_id。
sess_used_dynamic_memory
bigint
当前已经使用的动态内存,单位为B。
sess_max_dynamic_memory
bigint
最大可使用的动态内存,单位为B。
示例:
gaussdb=# SELECT * FROM GS_WLM_SESSION_MEMORY_INFO(); sessid | sess_used_dynamic_memory | sess_max_dynamic_memory -----------------+--------------------------+------------------------- 139976325986048 | 4326056 | -1 139976402532096 | 4452664 | -1 (2 rows)
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…