段页式存储函数

  • local_segment_space_info(tablespacename TEXT, databasename TEXT)

    描述:目前该接口已废弃,暂不可用。

  • pg_stat_segment_extent_usage(int4 tablespace oid, int4 database oid, int4 extent_type, int4 forknum)

    描述:目前该接口已废弃,暂不可用。

  • local_space_shrink(tablespacename TEXT, databasename TEXT)

    描述:当前节点上对指定段页式空间做物理空间收缩。注意,目前只支持对当前连接的database做shrink。

    返回值:空

  • gs_space_shrink(int4 tablespace, int4 database, int4 extent_type, int4 forknum)

    描述:效果跟local_space_shrink类似,对指定段页式空间做物理空间收缩,但参数不同,传入的是tablespace和database的oid,extent_type为[2,5]的int值。注意:extent_type = 1表示段页式元数据,目前不支持对元数据所在的物理文件做收缩。该函数仅限工具使用,不建议用户直接使用。

    返回值:空

  • pg_stat_remain_segment_info()

    描述:展示在当前节点上,因为故障等原因而残留的extent。残留extent主要分为两类:分配而未被利用的segment和分配出去而未被利用的extent。两者主要区别在于segment会包含多个extent,回收时,要将segment上的extent一并全部回收。

    返回值类型:

    名称

    描述

    space_id

    表空间ID

    db_id

    数据库ID

    block_id

    Extent的ID

    type

    Extent的类型,当前有三种:ALLOC_SEGMENT|DROP_SEGMENT|SHRINK_EXTENT

    其中type的三种类型分别表示:

    • ALLOC_SEGMENT:用户创建一张段页式表,当segment刚被分配,但是建表语句所在事务仍未提交时,节点故障,导致该segment被分配后,没有被使用。

    • DROP_SEGMENT:用户删除段页式表,当该事务成功提交,但是此表的segment页面对应的bit位未被重置,就发生掉电等故障,造成该segment未被使用,也未被释放。

    • SHRINK_EXTENT:用户对段页式表执行shrink操作,在未对空置出的extent进行释放时,发生掉电等故障,造成该extent残留,无法被重新利用。

      例如:

      select * from pg_stat_remain_segment_info();
      space_id | db_id | block_id | type
      ----------+-------+----------+------
      1663       |   16385|        4156| ALLOC_SEGMENT
      
  • pg_free_remain_segment(int4 spaceId, int4 dbId, int4 segmentId)

    描述:释放指定的残留extent。参数取值必须为从函数pg_stat_remain_segment_info中查询获取。函数会对传入值校验,如果指定extent不在记录的残留extent中,将返回错误信息。指定的extent如果为单个extent,则只将其独自释放;如果为一个segment,则会将此segment以及此segment上记录的所有extent释放。

    返回值:空

意见反馈
编组 3备份
    openGauss 2025-03-23 23:24:22
    取消