查询计划管理的参数参考 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

查询计划管理的参数参考

apg_plan_mgmt 扩展提供以下参数。

在相应的级别设置查询计划管理参数:

  • 在集群级别设置以便为所有数据库实例提供相同设置。有关更多信息,请参阅 修改数据库集群参数组中的参数

  • 在数据库级别设置以将设置限定在单独的数据库实例。有关更多信息,请参阅 修改数据库参数组中的参数

  • 在特定客户端会话中(例如在 psql 中)设置,以将值仅限定在该会话中。

您可以设置 Aurora 数据库集群级别或数据库实例级别的 apg_plan_mgmt.max_databases 参数和 apg_plan_mgmt.max_plans 参数。

apg_plan_mgmt.capture_plan_baselines

为 SQL 语句启用执行计划捕获。

SET apg_plan_mgmt.capture_plan_baselines = [off | automatic |manual];
描述
off 禁用计划捕获。这是默认模式。
automatic 为满足资格条件的后续 SQL 语句启用计划捕获。
manual 为后续 SQL 语句启用计划捕获。

apg_plan_mgmt.max_databases

设置可以使用查询计划管理的最大数据库数量。您可以使用 psq1 元命令 (\l) 来了解 Aurora PostgreSQL 数据库集群中的数据库实例上有多少个数据库。默认情况下,查询计划管理可以支持 10 个数据库。您可以在数据库集群级别或数据库实例级别更改此参数的值。

重要

如果更改 apg_plan_mgmt.max_databases 的值,请务必重启数据库实例,以便新值能够生效。

SET apg_plan_mgmt.max_databases = integer-value;
默认值 描述
正整数 10 一个正整数值。

apg_plan_mgmt.max_plans

设置查询计划管理器可以在 apg_plan_mgmt.dba_plans 视图中维持的 SQL 语句的最大数量。我们建议为所有的 Aurora PostgreSQL 版本将此参数设置为 10000 或更高的值。

重要

您可以在 Aurora 数据库集群级别或数据库实例级别设置 apg_plan_mgmt.max_plans 参数。请务必重启数据库实例,以便新值能够生效。

SET apg_plan_mgmt.max_plans = integer-value;
默认值 版本
正整数 >= 10

10000

Aurora PostgreSQL 版本 11 及更高版本

1000

Aurora PostgreSQL 版本 10 及早期版本

apg_plan_mgmt.plan_retention_period

在被自动删除之前,计划会在 apg_plan_mgmt.dba_plans 视图中保留的天数。如果当前日期距离计划的 last_used 日期达到指定天数,则将删除计划。默认值为 32 天。last_used 日期是优化程序选择计划作为最低成本计划或执行计划的最近日期。

SET apg_plan_mgmt.plan_retention_period = integer-value;
默认值 描述
正整数 32 一个大于或等于 32 的正整数值,表示天数。

apg_plan_mgmt.unapproved_plan_execution_threshold

预计的总计划成本阈值,低于该值时优化程序将运行未批准的计划。默认情况下,优化程序不运行未批准的计划。不过,您可以为速度最快的未批准计划设置执行阈值。使用此设置,优化程序可以绕过仅实施一个已批准计划的开销。

SET apg_plan_mgmt.unapproved_plan_execution_threshold = integer-value;
默认值 描述
正整数 0 一个大于或等于 0 的正整数值。值 0 意味着在 use_plan_baselinestrue 时不运行未批准的计划。

在以下示例中,优化程序在估计的成本低于 550 时运行未批准的计划,即使 use_plan_baselinestrue

SET apg_plan_mgmt.unapproved_plan_execution_threshold = 550;

apg_plan_mgmt.use_plan_baselines

强制优化程序为托管语句使用托管计划。

SET apg_plan_mgmt.use_plan_baselines = [true | false];
描述
true

强制使用托管计划。在 SQL 语句运行并且该语句是 apg_plan_mgmt.dba_plans 视图中的托管语句时,优化程序按照以下顺序选择托管计划。

  1. 有效且已启用的最低成本首选计划。

  2. 有效且已启用的最低成本已批准计划。

  3. 通过 apg_plan_mgmt.unapproved_plan_execution_threshold 参数设置时,有效、已启用且满足阈值的最低成本未批准计划。

  4. 优化程序生成的最低成本计划。

false (默认值)不使用托管计划。优化程序使用生成的最低成本计划。

使用说明

use_plan_baselinestrue 时,优化程序做出以下执行决策:

  1. 如果优化程序计划的估计成本低于 unapproved_plan_execution_threshold,则执行该计划,否则

  2. 如果计划为 approvedpreferred,则执行该计划,否则

  3. 执行最低成本 preferred 计划(如果可能),否则

  4. 执行最低成本 approved 计划(如果可能),否则

  5. 执行优化程序的最低成本计划。