更新时间: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。
父主题: 函数和操作符