云数据库 GAUSSDB-统计信息函数:分区表统计信息函数
分区表统计信息函数
- gs_stat_get_partition_stats(oid)
返回值类型:record
- gs_stat_get_xact_partition_stats(oid)
返回值类型:record
- gs_stat_get_all_partitions_stats()
返回值类型:setof record
- gs_stat_get_xact_all_partitions_stats()
返回值类型:setof record
- gs_statio_get_all_partitions_stats()
返回值类型:setof record
上述五个函数示例:
运行时统计信息上报是异步的,且基于UDP协议,后台线程处理可能存在延迟和丢包,此处示例预期仅供参考。
事务外统计信息查询:
gaussdb=# CREATE TABLE part_tab1 gaussdb-# ( gaussdb(# a int, b int gaussdb(# ) gaussdb-# PARTITION BY RANGE(b) gaussdb-# ( gaussdb(# PARTITION P1 VALUES LESS THAN(10), gaussdb(# PARTITION P2 VALUES LESS THAN(20), gaussdb(# PARTITION P3 VALUES LESS THAN(MAXVALUE) gaussdb(# ); CREATE TABLE gaussdb=# CREATE TABLE subpart_tab1 gaussdb-# ( gaussdb(# month_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# dept_code VARCHAR2 ( 30 ) NOT NULL , gaussdb(# user_no VARCHAR2 ( 30 ) NOT NULL , gaussdb(# sales_amt int gaussdb(# ) gaussdb-# PARTITION BY RANGE (month_code) SUBPARTITION BY RANGE (dept_code) gaussdb-# ( gaussdb(# PARTITION p_201901 VALUES LESS THAN( '201903' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201901_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201901_b VALUES LESS THAN( '3' ) gaussdb(# ), gaussdb(# PARTITION p_201902 VALUES LESS THAN( '201904' ) gaussdb(# ( gaussdb(# SUBPARTITION p_201902_a VALUES LESS THAN( '2' ), gaussdb(# SUBPARTITION p_201902_b VALUES LESS THAN( '3' ) gaussdb(# ) gaussdb(# ); CREATE TABLE gaussdb=# CREATE INDEX index_part_tab1 ON part_tab1(b) LOCAL gaussdb-# ( gaussdb(# PARTITION b_index1, gaussdb(# PARTITION b_index2, gaussdb(# PARTITION b_index3 gaussdb(# ); CREATE INDEX gaussdb=# CREATE INDEX idx_user_no ON subpart_tab1(user_no) LOCAL; CREATE INDEX gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# ANALYZE part_tab1; ANALYZE gaussdb=# VACUUM part_tab1; VACUUM gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# ANALYZE subpart_tab1; ANALYZE gaussdb=# VACUUM subpart_tab1; VACUUM gaussdb=# SELECT * FROM gs_stat_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+ ------------+-------------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+------------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 5 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.293965+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688861+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.291022+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688843+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.288037+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688829+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 5 | 1 | 4 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:45.285311+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:44.688802+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16954 | public | part_tab1 | p3 | | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.490636+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540115+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16953 | public | part_tab1 | p2 | | 4 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.487914+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540098+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 16952 | public | part_tab1 | p1 | | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+08 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 (7 rows) gaussdb=# SELECT * FROM gs_statio_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | t idx_blks_hit ---------------+------------+--------------+----------------+--------------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+-- ------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 8 | 2 | 21 | | | | 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 8 | 2 | 21 | | | | 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 8 | 2 | 21 | | | | 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 8 | 2 | 21 | | | | 16954 | public | part_tab1 | p3 | | 4 | 8 | 2 | 15 | | | | 16953 | public | part_tab1 | p2 | | 4 | 8 | 2 | 15 | | | | 16952 | public | part_tab1 | p1 | | 4 | 8 | 2 | 15 | | | | (7 rows) gaussdb=# SELECT * FROM gs_stat_get_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | last_data_changed | heap_blks_read | heap_blks_hit | idx_blks_re ad | idx_blks_hit | tup_fetch | block_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+------------+------------------------------+---------------------- --+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+------------------------+----------------+---------------+------------ ---+--------------+-----------+------------- 16952 | 5 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 2023-05-15 20:36:29.48536+08 | 2000-01-01 08:00:00+0 8 | 2023-05-15 20:36:28.540071+08 | 2000-01-01 08:00:00+08 | 1 | 0 | 1 | 0 | 2000-01-01 08:00:00+08 | 4 | 8 | 2 | 21 | 0 | 12 (1 row)
事务内统计信息查询:
gaussdb=# BEGIN; BEGIN gaussdb=# INSERT INTO part_tab1 VALUES(1, 1); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 11); INSERT 0 1 gaussdb=# INSERT INTO part_tab1 VALUES(1, 21); INSERT 0 1 gaussdb=# UPDATE part_tab1 SET a = 2 WHERE b = 1; UPDATE 1 gaussdb=# UPDATE part_tab1 SET a = 3 WHERE b = 11; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(part_tab1) */ part_tab1 SET a = 4 WHERE b = 21; UPDATE 1 gaussdb=# DELETE FROM part_tab1; DELETE 3 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '1', '1', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201902', '2', '2', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '1', '3', 1); INSERT 0 1 gaussdb=# INSERT INTO subpart_tab1 VALUES('201903', '2', '4', 1); INSERT 0 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 2 WHERE user_no='1'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 3 WHERE user_no='2'; UPDATE 1 gaussdb=# UPDATE subpart_tab1 SET sales_amt = 4 WHERE user_no='3'; UPDATE 1 gaussdb=# UPDATE /*+ indexscan(subpart_tab1) */ subpart_tab1 SET sales_amt = 5 WHERE user_no='4'; UPDATE 1 gaussdb=# DELETE FROM subpart_tab1; DELETE 4 gaussdb=# SELECT * FROM gs_stat_xact_all_partitions; partition_oid | schemaname | relname | partition_name | sub_partition_name | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd ---------------+------------+--------------+----------------+--------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+--------------- 16964 | public | subpart_tab1 | p_201902 | p_201902_b | 4 | 4 | 1 | 2 | 1 | 1 | 1 | 1 16963 | public | subpart_tab1 | p_201902 | p_201902_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16961 | public | subpart_tab1 | p_201901 | p_201901_b | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16960 | public | subpart_tab1 | p_201901 | p_201901_a | 4 | 4 | 1 | 0 | 1 | 1 | 1 | 1 16954 | public | part_tab1 | p3 | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 16953 | public | part_tab1 | p2 | | 3 | 2 | 0 | 0 | 1 | 1 | 1 | 1 16952 | public | part_tab1 | p1 | | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 (7 rows) gaussdb=# SELECT * FROM gs_stat_get_xact_partition_stats(16952); partition_oid | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd | tup_fetch ---------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+----------- 16952 | 4 | 2 | 0 | 0 | 1 | 1 | 1 | 1 | 0 (1 row)
- gs_stat_get_partition_analyze_count(oid)
返回值类型:bigint
- gs_stat_get_partition_autoanalyze_count(oid)
描述:autovacuum守护线程在该分区上启动分析的次数。
返回值类型:bigint
- gs_stat_get_partition_autovacuum_count(oid)
描述:autovacuum守护线程在该分区上启动清理的次数。
返回值类型:bigint
- gs_stat_get_partition_last_analyze_time(oid)
描述:用户在该分区上最后一次手动启动分析或者autovacuum线程启动分析的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_autoanalyze_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动分析的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_autovacuum_time(oid)
描述:autovacuum守护线程在该分区上最后一次启动清理的时间。
返回值类型:timestamptz
- gs_stat_get_partition_last_data_changed_time(oid)
描述:对于在分区上的修改insert/update/delete/truncate,在该表上最后一次操作的时间。当前暂不支持。
返回值类型:timestamptz
- gs_stat_get_partition_last_vacuum_time(oid)
描述:用户在该分区上最后一次手动启动清理或者autovacuum线程启动清理的时间。
返回值类型:timestamptz
- gs_stat_get_partition_numscans(oid)
返回值类型:bigint
- gs_stat_get_partition_tuples_returned(oid)
返回值类型:bigint
- gs_stat_get_partition_tuples_fetched(oid)
返回值类型:bigint
- gs_stat_get_partition_vacuum_count(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_tuples_fetched(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_numscans(oid)
返回值类型:bigint
- gs_stat_get_xact_partition_tuples_returned(oid)
返回值类型:bigint
- gs_stat_get_partition_blocks_fetched(oid)
返回值类型:bigint
- gs_stat_get_partition_blocks_hit(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_changed(oid)
描述:该表分区上一次analyze或autoanalyze之后插入、更新、删除行的总数量。
返回值类型:bigint
- pg_stat_get_partition_live_tuples(oid)
返回值类型:bigint
- pg_stat_get_partition_dead_tuples(oid)
描述:分区表死行数。在Ustore表中仅代表不活跃行指针数量。
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_inserted(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_deleted(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_hot_updated(oid)
返回值类型:bigint
- pg_stat_get_xact_partition_tuples_updated(oid)
返回值类型:bigint
- pg_stat_get_partition_tuples_hot_updated(oid)
参数:oid
返回值类型:bigint
- gs_wlm_respool_cpu_info()
返回值类型:setof recor
名称
类型
描述
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独立部署场景,会独立显示。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CPU_INFO(); respool_name | control_group | cpu_affinity | cpu_usage ---------------+----------------------+--------------+----------- respool_cpu_2 | respool_cpu_2:Medium | 0-95 | 78 default_pool | DefaultClass:Medium | 0-32 | 65 (2 rows)
- gs_wlm_respool_connection_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_connections
name
资源池最大连接数。
curr_connections
integer
当前资源池已有连接数。
示例:1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_CONNECTION_INFO(); respool_name | max_connections | curr_connections ---------------+-----------------+------------------ respool1 | -1 | 0 default_pool | -1 | 1 (2 rows)
- gs_wlm_respool_memory_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_dynamic_memory
integer
最大可使用的动态内存。
current_dynamic_memory
integer
当前已经使用的动态内存。
max_shared_memory
integer
最大可使用的共享内存。
current_shared_memory
integer
当前已经使用的共享内存。
shared_memory_hits_percent
integer
该功能不可用,留待后续演进。字段保留,恒为0。
在出现资源池动态内存使用超过最大值时,可能会出现查询GUC参数current_dynamic_memory返回的结果大于max_dynamic_memory的情况,这属于正常现象,实际并未申请内存。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_RESPOOL_MEMORY_INFO(); respool_name | max_dynamic_memory | current_dynamic_memory | max_shared_memory | current_shared_memory | shared_memory_hits_percent -----------------+--------------------+------------------------+-------------------+-----------------------+---------------------------- default_pool | -1 | 3383kB | -1 | 3848kB | 0 resource_pool_a | 30720kB | 0kB | -1 | 0kB | 0 (2 rows)
- gs_wlm_respool_concurrency_info()
返回值类型:setof record
名称
类型
描述
respool_name
name
资源池名称。
max_concurrency
integer
资源池支持的最大并发数。
running_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()
返回值类型: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。
示例:1 2 3 4 5
gaussdb=# SELECT * FROM GS_WLM_USER_SPACE_INFO(); user_name | max_permanent_space | current_permanent_space | max_temp_space | current_temp_space | max_spill_space | current_spill_space -----------------------------+---------------------+-------------------------+----------------+--------------------+-----------------+--------------------- xy | -1 | 2464 | -1 | 0 | -1 | 0 (1 rows)
- gs_wlm_session_io_info()
返回值类型:setof record
名称
类型
描述。
session_id
integer
会话ID。
io_limits
integer
每秒触发I/O的次数上限。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超过上限后等待的时间总和。
示例:
1 2 3 4 5
gaussdb=# SELECT * FROM GS_WLM_SESSION_IO_INFO(); session_id | io_limits | io_priority | current_iops | wait_time -----------------+-----------+-------------+--------------+----------- 139976325986048 | 10 | None | 0 | 2709 (1 row)
- gs_wlm_session_memory_info()
返回值类型:setof record
名称
类型
描述
session_id
integer
session_id。
sess_used_dynamic_memory
bigint
当前已经使用的动态内存,单位为B。
sess_max_dynamic_memory
bigint
最大可使用的动态内存,单位为B。
示例:
1 2 3 4 5 6
gaussdb=# SELECT * FROM GS_WLM_SESSION_MEMORY_INFO(); sessid | sess_used_dynamic_memory | sess_max_dynamic_memory -----------------+--------------------------+------------------------- 139976325986048 | 4326056 | -1 139976402532096 | 4452664 | -1 (2 rows)
- gs_session_alt_status()
描述:查询当前用户所执行的计划外应用无损透明会话的可恢复状态。当前暂不支持。
返回值类型:setof record
- GaussDB函数_GaussDB数据库函数_高斯数据库函数_华为云
- GaussDB支持的函数_GaussDB函数类型解析_高斯数据库支持的函数-华为云
- 调用函数_函数调用方式_函数工作流 FunctionGraph-华为云
- GaussDB数据库函数_GaussDB函数和操作符_高斯数据库函数-华为云
- GaussDB数据库函数_GaussDB介绍_高斯数据库函数
- GaussDB案例指南_高斯数据库函数_高斯数据库案例指南_华为云
- 什么是函数工作流_函数托管计算服务_函数工作流 FunctionGraph-华为云
- 使用容器镜像部署函数_函数部署_函数工作流 FunctionGraph-华为云
- 如何使用模板创建函数_模板创建函数_函数工作流 FunctionGraph-华为云
- GaussDB性能_性能统计_高斯数据库性能-华为云