查询计划管理的参数参考
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_baselines 为 true 时不运行未批准的计划。 |
在以下示例中,优化程序在估计的成本低于 550 时运行未批准的计划,即使 use_plan_baselines 为 true。
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 语句运行并且该语句是
|
false |
(默认值)不使用托管计划。优化程序使用生成的最低成本计划。 |
使用说明
当 use_plan_baselines 为 true 时,优化程序做出以下执行决策:
如果优化程序计划的估计成本低于
unapproved_plan_execution_threshold,则执行该计划,否则如果计划为
approved或preferred,则执行该计划,否则执行最低成本
preferred计划(如果可能),否则执行最低成本
approved计划(如果可能),否则执行优化程序的最低成本计划。