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

Multixact回收函数

  • gs_vacuum_multixact()

    描述:回收pg_multixact目录下的offsets和members中的数据文件。

    返回值类型:Boolean

    • 成功回收文件时返回true。
    • 无可回收文件时返回false。

    该函数有如下约束:

    • 本函数仅支持在主DN上执行,或通过EXECUTE DIRECT方式在对应主DN执行回收。
    • 仅初始用户或具有sysadmin属性的用户可以调用。
    • 不支持在CN上执行手动回收。

    示例1:无可回收文件返回false。

    gaussdb=# SELECT gs_vacuum_multixact();
     gs_vacuum_multixact
    ---------------------
     f
    (1 row)

    示例2:回收文件成功返回true。

    gaussdb=# SELECT gs_vacuum_multixact();
     gs_vacuum_multixact
    ---------------------
     t
    (1 row)

    是否可回收的逻辑基于PG_DATABASE系统表的datminmxid计算,某些场景可能导致datminmxid不推进,如:当前库存在全局临时表。由于全局临时表的数据具有会话级隔离特性,VACUUM后台线程无法访问全局临时表的信息,导致该全局临时表的relminmxid字段无法自动推进,最终影响datminmxid无法推进。因此,需要在全局临时表的会话上对所有全局临时表执行“vacuum freeze 表名; ”命令,以推进当前全局临时表的relminmxid。

相关文档