HTAP系统函数
gs_htap_tmu_data(rel_oid oid, rowgroup_id integer)
描述:查看实时事务单元TMU中的活跃事务数据。当rowgroup_id为0时,返回表中所有活跃事务数据;当rowgroup_id非0时,返回表中指定行组中的活跃事务数据。
返回值类型:record
备注:必须是系统管理员或运维管理员才能执行此函数。

本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
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记录的不同操作属性。其中:
|
示例:
- 当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
备注:必须是系统管理员或运维管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
rel_oid |
oid |
行存表oid信息。 |
输入参数 |
rowgroup_id |
integer unsigned |
行组唯一标识。 |
输出参数 |
rel_oid |
oid |
行存表oid信息。 |
输出参数 |
rowgroup_id |
integer unsigned |
行组唯一标识。 |
输出参数 |
status |
smallint unsigned |
表示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
备注:必须是系统管理员或运维管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
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业务有一定影响,仅作为运维接口使用,且不建议频繁执行。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输入参数 |
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
备注:必须是系统管理员或运维管理员才能执行此函数。
参数类型 |
参数名 |
类型 |
描述 |
---|---|---|---|
输出参数 |
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
参数类型 |
参数 |
类型 |
描述 |
---|---|---|---|
输入参数 |
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
参数 |
参数 |
类型 |
描述 |
---|---|---|---|
输出参数 |
reloid |
oid |
表id。 |
输出参数 |
relname |
name |
表名。 |
输出参数 |
dbname |
name |
数据库名。 |
输出参数 |
username |
name |
用户名。 |
输出参数 |
parentoid |
oid |
父表id。 |
输出参数 |
imcvstatus |
char |
IMCV表状态:
|
输出参数 |
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
参数类型 |
参数 |
类型 |
描述 |
---|---|---|---|
输出参数 |
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)