云数据库 GAUSSDB-统计信息函数:分区表统计信息函数

时间:2024-11-13 14:45:55

分区表统计信息函数

  • 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)

    描述:分区表死行数。在Ustore表中仅代表不活跃行指针数量。

    返回值类型: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_session_alt_status()

    描述:查询当前用户所执行的计划外ALT会话的可恢复状态。这里不包括不支持的驱动接口调用所导致的会话状态变更。不可恢复的原因仅提供基本类别;如果是不支持的GUC参数、SQL或系统函数,请查询ALT支持的列表来确认应用程序调用的请求是否在支持范围内,详见《特性指南》的“计划外应用无损透明”章节中对GUC参数、SQL语法和系统函数的ALT支持策略列表描述。

    返回值类型:setof record。

    名称

    类型

    描述。

    sessionid

    integer

    会话ID。

    sessionreplaystatus

    text

    ALT会话恢复的状态。

    • enable: 可恢复。
    • disable:不可恢复。

    xactreplaystatus

    text

    ALT事务重放的状态。

    • enable: 可恢复。
    • disable:不可恢复。

    reason

    text

    不可恢复的原因简述。

    示例:

    1
    2
    3
    4
    5
    6
    gaussdb=# SELECT * FROM GS_SESSION_ALT_STATUS();
        sessionid    | sessionreplaystatus | xactreplaystatus |                                         reason                                         
    -----------------+---------------------+------------------+----------------------------------------------------------------------------------------
     140564166014720 | disable             | disable          | Session data types(valid after transaction is finished):unsupported set from current, +
                     |                     |                  | Transaction non-replayable types:advisory lock, 
    (1 row)
    
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0398.html