查询计划管理的最佳实践
请考虑使用主动式还是反应式的计划管理风格。这些计划管理风格的不同之处在于批准新计划供使用的方式和时间。
主动式计划管理有助于防止性能下降
通过主动式计划管理,您可在验证新计划的速度更快之后,手动批准新计划。这样做可以防止计划性能下降。对于主动式计划管理,请按照以下步骤操作:
反应式计划管理可检测和修复性能下降
采用反应式计划管理,您可以在应用程序运行时进行监控,检测造成性能下降的计划。检测到性能下降时,您可以手动拒绝或修复糟糕的计划。对于反应式计划管理,请按照以下步骤操作:
在应用程序运行时,强制使用托管计划并自动添加新发现的计划作为未批准的计划。有关更多信息,请参阅“使用托管计划”和“自动捕获计划”。
监控正在运行应用程序的性能下降。
在您发现计划性能下降时,请将计划的状态设置为
rejected。下次优化程序运行 SQL 语句时,它会自动忽略拒绝的计划,并改为使用不同的已批准计划。有关更多信息,请参阅 拒绝或禁用速度较慢的计划。在某些情况下,您可能会偏好修复糟糕的计划而不是拒绝、禁用或删除该计划。使用
pg_hint_plan扩展来试验改进计划。通过pg_hint_plan,您使用特殊注释告知优化程序覆盖其通常创建计划的方式。有关更多信息,请参阅 使用 pg_hint_plan 修复计划。