更新时间:2026-10-21 GMT+08:00
分享

bucket系统函数

  • gs_bucket_get_data_distribution(relation REGCLASS, forknum INTEGER, including_toast Boolean)

    描述:获取某个hashbucket表的数据分布情况。

    参数说明:

    名称

    类型

    描述

    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)

    描述:获取段页式表header。只支持在DN上调用。

    参数说明:

    名称

    类型

    描述

    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)

    描述:更新段页式表header。只支持在DN上调用。

    参数说明:

    名称

    类型

    描述

    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

  • gs_redis_set_csn(csn BIGINT)

    描述:修改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)

    描述:查询bucket扩容回放的刷页信息。

    权限:只支持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之后的待回滚事务。

相关文档