PostgreSQL中PL / pgSQL函数的执行计划缓存

时间:2017-10-11 22:15:37

标签: postgresql caching sql-execution-plan

如果我改变另一个PL / pgSQL函数中正在使用的PL / pgSQL函数,PostgreSQL会为这两个函数重建执行计划还是仅为更改的执行计划?

假设我使用第三个函数有2个函数。假设check_permission(user_id)get_company(user_id)使用了get_location(user_id)函数。

我以某种方式缓存了他们的执行计划。

然后我更改check_permission,是否会删除get_company(user_id)get_location(user_id)的执行计划缓存并按需重建?

1 个答案:

答案 0 :(得分:-1)

PostgreSQL跟踪依赖关系,当事情发生变化时,它会非常积极地刷新缓存。

如果更改了某个功能,它至少会使所有依赖它的功能的计划无效。在实践中,它只是完全刷新所有缓存的查询计划。

依赖于其他视图的视图,引用视图的预准备语句等等也是如此。

如果您发现未能执行此操作的情况,则表示您发现了错误。请用完整的可重复测试用例报告。