云数据库 GAUSSDB-HTAP系统函数

时间:2024-11-13 14:46:28

HTAP系统函数

  • gs_htap_tmu_data(rel_oid oid, rowgroup_id integer)

    描述:查看实时事务单元TMU中的活跃事务数据。当rowgroup_id为0时,返回表中所有活跃事务数据;当rowgroup_id非0时,返回表中指定行组中的活跃事务数据。

    返回值类型:record

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

    本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。

    表1 gs_htap_tmu_data参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    rel_oid

    oid

    行存表oid信息。

    输入参数

    rowgroup_id

    integer unsigned

    行组唯一标识。

    输出参数

    rel_oid

    oid

    行存表oid信息。

    输出参数

    rowgroup_id

    integer unsigned

    行组唯一标识。

    输出参数

    xid

    xid

    操作该数据的事务id。

    输出参数

    ctid

    cstring

    该数据在页面上的位置。

    输出参数

    flag

    smallint unsigned

    二进制标记位,每一数位表示TMU记录的不同操作属性。其中:

    • 第4位为1时,表示该记录是一条更新操作。
    • 第3位为1时,表示该记录是一条删除操作。
    • 第2位为1时,表示该记录是一条插入操作。

    示例:

    • 当enable_htap=off时:
      gaussdb=# select * from gs_htap_tmu_data(16796,0);
      ERROR:  Query failed due to ENABLE_HTAP is not enabled.
    • 当enable_htap=on时:
      gaussdb=# select * from gs_htap_tmu_data(16796,0);
       rel_oid | rowgroup_id |  xid  | ctid  | flag
      ---------+-------------+-------+-------+-------
         16796 | 1           | 78437 | (0,1) | 16385
         16796 | 1           | 78437 | (0,2) | 16385
         16796 | 1           | 78439 | (0,1) | 4097
         16796 | 1           | 78439 | (0,2) | 4097
      (4 rows)
  • gs_htap_tmu_chunk_meta(rel_oid oid, rowgroup_id integer)

    描述:查看实时事务单元TMU元数据信息。当rowgroup_id为0时,返回所有行组中的实时事务单元TMU数据信息;当rowgroup_id非0时,返回表中指定行组中的实时事务单元TMU数据信息。

    返回值类型:record

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

    表2 gs_htap_tmu_chunk_meta参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    rel_oid

    oid

    行存表oid信息。

    输入参数

    rowgroup_id

    integer unsigned

    行组唯一标识。

    输出参数

    rel_oid

    oid

    行存表oid信息。

    输出参数

    rowgroup_id

    integer unsigned

    行组唯一标识。

    输出参数

    status

    smallint unsigned

    表示TMU的状态。

    • 1表示TMU没有被清理过。
    • 2表示TMU被清理过。

    输出参数

    row_count

    integer unsigned

    数据行数。

    输出参数

    buffer_count

    integer unsigned

    包含的buffer个数。

    输出参数

    mem_usage

    bigint

    申请内存大小。

    输出参数

    inprogress

    cstring

    表示插入TMU数据的事务处于活跃状态的占比。

    输出参数

    completed

    cstring

    表示插入TMU数据的事务处于提交或回滚状态的占比。

    示例:

    • 当enable_htap=off时:
      gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0);
      ERROR:  Query failed due to ENABLE_HTAP is not enabled.
    • 当enable_htap=on时:
      gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0);
       rel_oid | rowgroup_id | status | row_count | buffer_count | mem_usage | inprogress | completed
      ---------+-------------+--------+-----------+--------------+-----------+------------+-----------
         16796 | 1           | 1      | 4         | 1            |     65536 | 0.00%      | 100.00%
      (1 row)
  • gs_imcv_bgworker_status()

    描述:显示执行IMCV表重建的bgworker的状态信息。

    返回值类型:record

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

    表3 gs_imcv_bgworker_status参数说明

    参数类型

    参数名

    类型

    描述

    输出参数

    worker_pid

    bigint

    线程号。

    输出参数

    relation_id

    oid

    正在处理的IMCV表的oid。

    输出参数

    worker_status

    cstring

    表示idle(准备)、running(进行中)、finished(完成)三种线程工作状态。

    输出参数

    start_time

    timestamp with time zone

    重建开始的时间戳。

    示例:

    • 当enable_htap=off时:
      gaussdb=# select * from gs_imcv_bgworker_status();
      ERROR:  Query failed due to ENABLE_HTAP is not enabled.
    • 当enable_htap=on时:
      gaussdb=# select * from gs_imcv_bgworker_status();
       worker_pid | relation_id | worker_status | start_time
      ------------+-------------+---------------+------------
                0 |           0 | finished      |
                0 |           0 | idle          |
                0 |           0 | idle          |
      (3 rows)
  • gs_imcv_flush(reloid oid)

    描述:对数据库中指定的IMCV表立即进行一次重建,并显示重建的结果。重建过程将刷新IMCV表,移除旧数据并同步当前表的非活跃数据。

    返回值类型:text

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

    当IMCV表内的数据足够新鲜时,可能会跳过重建。本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。

    表4 gs_imcv_flush参数说明

    参数类型

    参数名

    类型

    描述

    输入参数

    reloid

    oid

    行存表oid。

    输出参数

    output

    text

    返回本次重建的结果。显示行组重建成功的数量以及跳过重建的数量。

    示例:

    • 当enable_htap=off时:
      gaussdb=# select * from gs_imcv_flush(16796);
      ERROR:  Manual row group rebuilding failed due to ENABLE_HTAP is not enabled.
    • 当enable_htap=on时:
      gaussdb=# select * from gs_imcv_flush(16796);
                       gs_imcv_flush
      ------------------------------------------------
       2 row groups rebuilt successfully, 1 skipped.
      (1 row)
  • gs_imcv_taskbuffer_view()

    描述:gs_imcv_taskbuffer_view显示HTAP业务中重建任务队列使用情况,入参为空。

    返回值类型:record

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

    表5 gs_imcv_taskbuffer_view参数说明

    参数类型

    参数名

    类型

    描述

    输出参数

    buffer_is_empty

    boolean

    任务队列是否为空。默认值为t。

    输出参数

    buffer_is_full

    boolean

    任务队列是否存满。默认值为f。

    输出参数

    buffer_used_space

    integer

    任务已使用空间。默认值为0。

    输出参数

    buffer_free_space

    integer

    任务剩余空间。默认值为999。

    示例:

    • 当enable_htap=off时:
      gaussdb=# select * from gs_imcv_taskbuffer_view();
      ERROR:  Query failed due to ENABLE_HTAP is not enabled.
    • 当enable_htap=on时:
      gaussdb=# select * from gs_imcv_taskbuffer_view();
       buffer_is_empty | buffer_is_full | buffer_used_space | buffer_free_space
      -----------------+----------------+-------------------+-------------------
       t               | f              |                 0 |               999
      (1 row)
  • gs_imcu_meta(rel_name)

    描述:gs_imcu_meta用于显示指定rel_name的IMCV表下的IMCU元信息。

    返回值类型:record

    表6 gs_imcu_meta参数列表

    参数类型

    参数

    类型

    描述

    输入参数

    relname

    text

    IMCV表名。

    输出参数

    reloid

    oid

    表id。

    输出参数

    relname

    text

    表名。

    输出参数

    imcu_xmin

    xid

    预留,暂不使用。

    输出参数

    imcu_id

    integer

    IMCU id。

    输出参数

    row_count

    integer

    IMCU行数。

    输出参数

    imcu_size

    integer

    IMCU大小,单位字节。

    输出参数

    imcu_mode

    integer

    IMCU加载列数据特征:

    • 普通。
    • 全部为空。
    • 相同值。
    • 无最大最小值。
    • 有空行。

    输出参数

    imcu_pointer

    bigint

    预留,暂不使用。

    输出参数

    magic

    integer

    IMCU校验magic。

    输出参数

    attnum

    smallint

    IMCU加载列对应的attnum。

    示例:

    gaussdb=# SELECT * FROM gs_imcu_meta('test2');
    I reloid | relname | imcu_xmin | imcu_id | row_count | imcu_size | imcu_mode | imcu_pointer | magic | attnum 
    --------+---------+-----------+---------+-----------+-----------+-----------+--------------+-------+--------
     115114 | test2   |         0 |       1 |         9 |      8192 |         1 |            0 | 74802 |      0
     115114 | test2   |         0 |       1 |         9 |      8192 |         1 |            0 | 74802 |      1
     115114 | test2   |         0 |       1 |         9 |      8192 |         1 |            0 | 74802 |      2
     115114 | test2   |         0 |       1 |         9 |      8192 |         1 |            0 | 74802 |      3
     115114 | test2   |         0 |       1 |         9 |      8192 |         0 |            0 | 74802 |      4
     115114 | test2   |         0 |       1 |         9 |      8192 |         0 |            0 | 74802 |      5
    (6 rows)

    备注:该示例表示共有1个行组(imcu_id为1),每一行代表一个cu(其中attnum为0的列为ctid列),每个cu行数为9行。

  • gs_imcv_status()

    描述:gs_imcv_status函数用于显示当前所有IMCV表的状态信息。

    返回值类型:record

    表7 gs_imcv_status参数列表

    参数

    参数

    类型

    描述

    输出参数

    reloid

    oid

    表id。

    输出参数

    relname

    name

    表名。

    输出参数

    dbname

    name

    数据库名。

    输出参数

    username

    name

    用户名。

    输出参数

    parentoid

    oid

    父表id。

    输出参数

    imcvstatus

    char

    IMCV表状态:

    • 'I': POPULATE_STAT_INIT初始化。
    • 'L': POPULATE_STAT_LOAD_START开始加载。
    • 'M': POPULATE_STAT_LOAD_META_DONE加载元数据。
    • 'F': POPULATE_STAT_LOAD_FINISH加载完成。
    • 'D': POPULATE_STAT_DROP已删除。
    • 'E': POPULATE_STAT_ERROR异常。

    输出参数

    imcvnattr

    smallint

    加载列数量。

    输出参数

    imcvkey

    int2vector

    加载的列数组。

    输出参数

    priority

    smallint

    加载优先级。

    输出参数

    rowgroup_num

    integer

    行组数。

    输出参数

    cu_num_in_mem

    integer

    内存中的IMCU数量。

    输出参数

    cu_mem_size

    bigint

    IMCU占用的内存大小,单位字节。

    输出参数

    cu_num_in_disk

    integer

    暂不支持,值为0。

    输出参数

    cu_disk_size

    bigint

    暂不支持,值为0。

    示例:

    gaussdb=# SELECT * FROM gs_imcv_status();
     reloid | relname |  dbname  | username | parentoid | imcvstatus | imcvnattr |  imcvkey  | priority | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size 
    --------+---------+----------+----------+-----------+------------+-----------+-----------+----------+--------------+---------------+-------------+----------------+--------------
     115114 | test2   | postgres | lqy      |         0 | F          |         5 | 1 2 3 4 5 |        1 |            1 |             6 |       49152 |              0 |            0
    (1 row)

  • gs_imcu_slot_status()

    描述:gs_imcu_slot_status记录了IMCV表下的IMCU对应的缓存slot信息。

    返回值类型:record

    表8 gs_imcu_slot_status参数列表

    参数类型

    参数

    类型

    描述

    输出参数

    reloid

    oid

    表id。

    输出参数

    cu_id

    integer

    IMCU id。

    输出参数

    col_id

    integer

    IMCU 所属列id。

    输出参数

    slot_id

    integer

    缓存区slot id。

    输出参数

    block_size

    integer

    IMCU内存大小,单位字节。

    输出参数

    flag

    char

    缓存块标志位。

    示例(flag为\x01表示缓存slot包含有效数据):

    gaussdb=# SELECT * FROM gs_imcu_slot_status();
     reloid | cu_id | col_id | slot_id | block_size | flag 
    --------+-------+--------+---------+------------+------
     115114 |     1 |      1 |       0 |       8192 | \x01
     115114 |     1 |      2 |       1 |       8192 | \x01
     115114 |     1 |      3 |       2 |       8192 | \x01
     115114 |     1 |      4 |       3 |       8192 | \x01
     115114 |     1 |      5 |       4 |       8192 | \x01
     115114 |     1 |      0 |       5 |       8192 | \x01
    (6 rows)
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-1676.html