小编Bru*_*ngo的帖子

函数中的 Postgres 真空

谷歌搜索后,很明显你不能从函数运行真空:

Postgres 邮件 - plpgsql 函数中的真空行为

由于内存管理限制,您无法从函数内部运行 VACUUM。在当前来源中有一个错误检查以防止您尝试。

Stackoverflow - 无法从函数或多命令字符串执行 VACUUM

加载数据后,我想对受影响的表进行“真空分析”,既要从已删除的记录中恢复空间,又要准确反映新内容。[...] 当我运行这个时,我得到:

ERROR: VACUUM cannot be executed from a function or multi-command string

但是我真的需要在运行某个函数时“自动”运行vacuum:这个函数更新了很多记录(如果不是全部),所以死行的数量增加得非常快,其他查询性能下降很多。问题是该函数是从另一个程序调用的。任何最佳实践?我应该在函数执行后手动将真空语句添加到一段单独的代码中,就像

sql = SELECT my_function() <program.execute(sql)> sql = VACUUM [FULL | ANALYZE] my_updated_table <program.execute(sql)>

postgresql performance vacuum postgresql-performance

4
推荐指数
1
解决办法
4388
查看次数