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

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)