bucket系统函数
- gs_bucket_get_data_distribution(relation REGCLASS, forknum INTEGER, including_toast Boolean)
参数说明:
名称
类型
描述
relation
REGCLASS
表名。
forknum
INTEGER
数据文件分支,合法取值范围包括:
- 0:表示main fork。
- 1:表示fsm fork。
- 2:表示vm fork。
- -1:表示其他所有forknum下的结果之和。
including_toast
Boolean
数据分布情况统计是否包含toast表。
返回值说明:
名称
类型
描述
node_name
TEXT
数据库节点名称。
bucketnode
INT2
bucket编号。
used_blocks
INT8
表在该bucket编号下已使用的数据块数量。
allocated_blocks
INT8
表在该bucket编号下已申请的数据块数量。
示例:
gaussdb=# select * from gs_bucket_get_data_distribution('bucket_table', 0, true); node_name | bucketnode | used_blocks | allocated_blocks -----------+------------+-------------+------------------ datanode1 | 0 | 1 | 8 datanode1 | 1 | 1 | 8 datanode1 | 2 | 1 | 8 datanode1 | 3 | 1 | 8 datanode1 | 4 | 1 | 8 datanode1 | 5 | 1 | 8 datanode1 | 6 | 1 | 8 datanode1 | 7 | 1 | 8 datanode1 | 8 | 1 | 8 datanode1 | 9 | 1 | 8 datanode1 | 10 | 1 | 8 datanode1 | 11 | 1 | 8 datanode1 | 12 | 1 | 8 datanode1 | 13 | 1 | 8 datanode1 | 14 | 1 | 8 datanode1 | 15 | 1 | 8 datanode1 | 16 | 1 | 8 datanode1 | 17 | 1 | 8 datanode1 | 18 | 1 | 8 datanode1 | 19 | 1 | 8 datanode1 | 20 | 1 | 8 datanode1 | 21 | 1 | 8 datanode1 | 22 | 1 | 8 datanode1 | 23 | 1 | 8 datanode1 | 24 | 1 | 8 ...(数据较多,仅展示部分)
- gs_redis_get_plan(origin_group_id OID, target_group_id OID)
描述:获取完整的迁移计划。只支持在扩容期间内部调用,且只支持在CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值说明:
名称
类型
描述
sender_id
OID
源节点的node oid。
sender_name
CSTRING
源节点的节点名称。
receiver_id
OID
新节点的node oid。
receiver_name
CSTRING
新节点的节点名称。
bucket_number
INT4
bucket_list中包含的bucket个数。
bucket_list
OIDVECTOR_EXTEND
迁移计划涉及的bucket列表。
- gs_redis_get_bucket_statistics()
参数:void
返回值说明:
名称
类型
描述
bucket_id
OID
bucket id
redis_state
INT1
bucket的扩容状态,0表示扩容未开始,1表示扩容基线数据已完成。
xlog_count
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的Xlog数量。
sndr_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的最新LSN。
parser_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到的最新LSN。
parser_latest_lsn_new
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到bucketxlog的最新LSN。
rcvr_redo_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被新DN的扩容相关线程回放到的最新LSN。
rcvr_redo_latest_lsn_new
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被新DN的扩容相关线程回放到bucketxlog的最新LSN。
rcvr_checkpoint
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)的checkpoint点。
rcvr_redo_start_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放开始的原始LSN。
rcvr_redo_end_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放结束的原始LSN。
- gs_redis_set_distributed_db(db_name CSTRING, bucketgroup SMALLINT)
描述:设置当前正在hashbucket重分布的数据库。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:
- db_name:本次要重分布的数据库库名。
- bucketgroup:本次要重分布的bucketgroup,当前版本暂无任何作用。
返回值说明:void
-
gs_redis_parse_slicebucket_tranfer_file(plan_json CSTRING, type CSTRING)
描述:用于获取slicebucket搬迁计划。只支持在扩容期间内部调用,且只支持在CN上调用,当前版本暂不支持。
参数说明:
名称
类型
描述
plan_json
TEXT
用户指定的slice搬迁文件。
type
CSTRING
解析计划类型,可指定为'incremental'或'full',默认为'full'。
返回值类型:
名称
类型
描述
idx
INT
需要搬迁的数据库序号。
database_name
CSTRING
需要搬迁的数据库名字。
-
gs_redis_get_slicebucket_plan()
描述:用于获取当前库的slicebucket迁移计划。只支持在扩容期间内部调用,且只支持在CN上调用,当前版本暂不支持。
参数:void
返回值说明:
名称
类型
描述
sender_id
OID
源节点的节点oid。
sender_name
CSTRING
源节点的节点名称。
receiver_id
OID
新节点的节点oid。
receiver_name
CSTRING
新节点的节点名称。
bucket_number
INT4
bucket_list中包含的bucket个数。
bucket_list
OIDVECTOR_EXTEND
迁移计划涉及的bucket列表。
bucketgroup
OID
bucketlist中的bucket所属的具体group,取值范围为0 ~ 4。
- gs_redis_hashbucket_update_segment_header(origin_group_id OID, target_group_id OID)
描述:更新当前数据库所有hashbucket表的header。只支持在扩容期间内部调用,且只支持在CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值类型:Boolean
- gs_redis_local_get_segment_header(table_name REGCLASS, bucketlist OIDVECTOR_EXTEND)
参数说明:
名称
类型
描述
table_name
REGCLASS
表名
bucketlist
OIDVECTOR_EXTEND
bucket列表。
返回值类型:header_info
示例:
gaussdb=# SELECT * FROM gs_redis_local_get_segment_header('mytable', '256'); gs_redis_local_get_segment_header ---------------------------------------------------------------------------------------------------------------------------- 4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,...(数据较多,仅展示部分) (1 row) - gs_redis_local_update_segment_header(table_name REGCLASS, header_info CSTRING)
参数说明:
名称
类型
描述
table_name
REGCLASS
表名
header_info
CSTRING
段页式表header。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_local_update_segment_header('mytable', '4294967295,4294967295,4294967295,4294967295,....'); (数据较多,仅展示部分) gs_redis_local_update_segment_header ------------------------------------------- 0 (1 row) - gs_redis_hashbucket_update_inverse_pointer(buckets TEXT, origin_dn_name TEXT, new_dn_name TEXT)
描述:更新当前db所有hashbucket表本批次bucket的反向指针。只支持在扩容期间内部调用,且只支持在CN上调用。
参数说明:
名称
类型
描述
buckets
TEXT
本次上线的bucket列表。
origin_dn_name
TEXT
源节点名称。
new_dn_name
TEXT
新节点名称。
返回值类型:void
- gs_redis_local_get_inverse_pointer(buckets TEXT, origin_dn_name TEXT, new_dn_name TEXT)
描述:获取反向指针。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:
名称
类型
描述
buckets
TEXT
本次上线的bucket列表。
origin_dn_name
TEXT
源节点名称。
new_dn_name
TEXT
新节点名称。
返回值类型:void
- gs_redis_local_update_inverse_pointer(table_name TEXT, header_info TEXT, bucketlist TEXT)
描述:记录更新反向指针的Xlog。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:
名称
类型
描述
table_name
REGCLASS
表名。
header_info
TEXT
段页式表header。
bucketlist
TEXT
bucket列表。
返回值类型:void
- gs_redis_local_set_hashbucket_frozenxid
描述:修改hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:void
返回值类型:void
- gs_redis_set_hashbucket_frozenxid(origin_group_id OID, target_group_id OID)
描述:修改新DN节点hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间内部调用,且只支持在CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值类型:void
- gs_redis_set_nextxid(xid BIGINT)
描述:修改DN节点next_xid值。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:xid:预期next_xid的值
返回值类型:void
-
描述:修改DN节点next_csn值。只支持在扩容期间内部调用,且只支持在GTM_FREE模式下和DN上调用。
参数说明:
- csn:预期next_csn的值。
返回值类型:void
-
gs_redis_check_bucket_flush(dn_array NAME[])
描述:查询RTO回放私有buffer是否全部刷下去。只支持在扩容期间内部调用。
参数说明:
- dn_array:DN节点名称列表。
返回值类型:Boolean
- gs_redis_get_flush_page_lsn(isclean bool)
权限:只支持debug版本调用,只支持在扩容期间内部调用。
参数说明:
- isclean:BOOLEAN类型,是否清理刷页信息。
返回值说明:名称
类型
描述
node_name
TEXT
页面所在dn名。
space_id
OID
表空间id。
db_id
OID
数据库id。
file_id
OID
数据文件编号,取值范围1-5。
bucket_id
OID
bucket分区id,取值范围0-1023。
forknum
OID
数据文件分支,取值范围0-2。
blocknum
OID
物理页面在数据文件中的偏移页面号。
latest_flush_lsn
UINT8
刷脏页面最新的lsn。
-
gs_redis_show_bucketxid(bucketid_list OIDVECTOR_EXTEND)
描述:查询指定bucket对应的bucketxid。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:
- bucketid_list:bucket列表。
返回值类型:CSTRING
-
gs_redis_drop_bucket_files(plan_json CSTRING)
描述:删除源节点已经物理搬迁的rangebucket文件。只支持在扩容期间内部调用,且只支持在CN上调用,当前版本暂不支持。
参数说明:
名称
类型
描述
plan_json
CSTRING
用户指定的SLICE搬迁文件。
返回值类型:BOOLEAN
-
gs_redis_drop_bucket_files(origin_group_id OID, target_group_id OID)
描述:删除源节点已经物理搬迁的文件。只支持在扩容期间内部调用,且只支持在CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值类型:BOOLEAN
-
gs_redis_local_drop_bucket_files(bucketlist CSTRING, bucketnum SMALLINT)
描述:删除对应的bucket list。只支持在扩容期间内部调用,且只支持在DN上调用。
参数说明:
名称
类型
描述
bucketlist
CSTRING
指定bucket列表。
bucketnum
SMALLINT
bucket的个数。
返回值类型:Boolean
- gs_redis_local_drop_bucket_files(database_name NAME, bucketlist CSTRING, bucketnum SMALLINT)
描述:用于rangebucket表删除对应db的bucket list。只支持在扩容期间内部调用,且只支持在DN上调用,当前版本暂不支持。
参数说明:
名称
类型
描述
database_name
NAME
指定数据库名。
bucketlist
CSTRING
指定bucket列表。
bucketnum
SMALLINT
bucket的个数。
返回值类型:Boolean
- gs_redis_slicebucket_update_segment_header()
描述:更新当前数据库所有slicebucket表的header。只支持在扩容期间内部调用,且只支持在CN上调用,当前版本暂不支持。
入参:void
返回值类型:Boolean
- gs_redis_get_undo_state(mode INTEGER)
描述:获取扩容重分布期间的UNDO回滚状态。仅支持在扩容期间内部调用。
参数说明:
名称
类型
描述
mode
INTEGER
重分布期间判断UNDO回滚状态的模式,取值范围:
- 0:表示UNDO监控点next_xid前是否有待回滚的事务。
- 1:表示是否有新增的小于监测点next_xid的回滚事务。
- 2:表示是否有大于监测点next_xid的待回滚事务。
返回值state为INT4类型,表示查询到的扩容重分布期间的UNDO回滚状态。根据参数值不同的返回值含义如下:
- 当mode=0时:
- state = 0表示无待回滚事务,xmin > 监控点next_xid。
- state = 1表示无待回滚事务,xmin <= 监控点next_xid。
- state = 2表示有待回滚事务。
- 当mode=1时:
- state=0表示无监控点next_xid之前的新增回滚事务。
- state=1表示有监控点next_xid之前的新增回滚事务。
- 当mode=2时:
- state=0表示无监控点next_xid之后的待回滚事务。
- state=1表示有监控点next_xid之后的待回滚事务。