Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

查询计划管理的最佳实践

请考虑使用主动式还是反应式的计划管理风格。这些计划管理风格的不同之处在于批准新计划供使用的方式和时间。

主动式计划管理有助于防止性能下降

通过主动式计划管理,您可在验证新计划的速度更快之后,手动批准新计划。这样做可以防止计划性能下降。对于主动式计划管理,请按照以下步骤操作:

  1. 在开发环境中,确定对性能或系统吞吐量造成最大影响的 SQL 语句。然后捕获这些语句中的计划,如手动捕获特定 SQL 语句的计划自动捕获计划中所述。

  2. 将捕获的计划从开发环境导出并导入到生产环境中。有关更多信息,请参阅导出和导入计划

  3. 在生产环境中,运行您的应用程序并强制使用批准的托管计划。有关更多信息,请参阅使用托管计划。在应用程序运行时,随着优化程序的发现还可添加新计划。有关更多信息,请参阅 自动捕获计划

  4. 分析未批准的计划并批准那些执行良好的计划。有关更多信息,请参阅评估计划性能

  5. 在应用程序持续运行时,优化程序开始相应使用新计划。

通过反应式计划管理来检测和修复性能下降

采用反应式计划管理,您可以在应用程序运行时进行监控,检测造成性能下降的计划。检测到性能下降时,您可以手动拒绝或修复糟糕的计划。对于反应式计划管理,请按照以下步骤操作:

  1. 在应用程序运行时,强制使用托管计划并自动添加新发现的计划作为未批准的计划。有关更多信息,请参阅使用托管计划自动捕获计划

  2. 监控正在运行应用程序的性能下降。

  3. 在您发现计划性能下降时,请将计划的状态设置为 rejected。下次优化程序运行 SQL 语句时,它会自动忽略拒绝的计划,并改为使用不同的已批准计划。有关更多信息,请参阅 拒绝或禁用速度较慢的计划

    在某些情况下,您可能会偏好修复糟糕的计划而不是拒绝、禁用或删除该计划。使用 pg_hint_plan 扩展来试验改进计划。通过 pg_hint_plan,您使用特殊注释告知优化程序覆盖其通常创建计划的方式。有关更多信息,请参阅使用 pg_hint_plan 修复计划