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

HTAP系统函数

由于HTAP特性不支持分布式,enable_htap在分布式中不可以设置为on,所以查以下系统函数时会显示为空或者报错:enable_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时,表示该记录是一条插入操作。
示例:查询gs_htap_tmu_data系统函数。
gaussdb=# select * from gs_htap_tmu_data(16796,0);
ERROR:  Query failed due to ENABLE_HTAP is not enabled.

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数据的事务处于提交或回滚状态的占比。

示例:查询gs_htap_tmu_chunk_meta系统函数。
gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0);
ERROR:  Query failed due to ENABLE_HTAP is not enabled.

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

重建开始的时间戳。

示例:查询gs_imcv_bgworker_status系统函数。
gaussdb=# select * from gs_imcv_bgworker_status();
ERROR:  Query failed due to ENABLE_HTAP is not enabled.

gs_imcv_flush(reloid oid)

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

返回值类型:text

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

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

表4 gs_imcv_flush参数说明

参数类型

参数名

类型

描述

输入参数

reloid

oid

行存表oid。

输出参数

output

text

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

示例:查询gs_imcv_flush系统函数。
gaussdb=# select * from gs_imcv_flush(16796);
ERROR:  Manual row group rebuilding failed due to ENABLE_HTAP is not enabled.

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。

示例:查询gs_imcv_taskbuffer_view系统函数。
gaussdb=# select * from gs_imcv_taskbuffer_view();
ERROR:  Query failed due to ENABLE_HTAP is not enabled.

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');
 reloid | relname | imcu_xmin | imcu_id | row_count | imcu_size | imcu_mode | imcu_pointer | magic | attnum 
--------+---------+-----------+---------+-----------+-----------+-----------+--------------+-------+--------
(0 rows)

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 
--------+---------+----------+----------+-----------+------------+-----------+-----------+----------+--------------+---------------+-------------+----------------+--------------
(0 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

缓存块标志位。

示例:

gaussdb=# SELECT * FROM gs_imcu_slot_status();
 reloid | cu_id | col_id | slot_id | block_size | flag 
--------+-------+--------+---------+------------+------
(0 rows)