查询计划管理的参数参考
apg_plan_mgmt
扩展提供以下参数。
参数
- apg_plan_mgmt.capture_plan_baselines
- apg_plan_mgmt.max_databases
- apg_plan_mgmt.max_plans
- apg_plan_mgmt.pgss_min_calls
- apg_plan_mgmt.pgss_min_mean_time_ms
- apg_plan_mgmt.pgss_min_stddev_time_ms
- apg_plan_mgmt.pgss_min_total_time_ms
- apg_plan_mgmt.plan_retention_period
- apg_plan_mgmt.unapproved_plan_execution_threshold
- apg_plan_mgmt.use_plan_baselines
在相应的级别设置查询计划管理参数:
-
在集群级别设置以便为所有数据库实例提供相同设置。有关更多信息,请参阅修改数据库集群参数组中的参数。
-
在数据库级别设置以将设置限定在单独的数据库实例。有关更多信息,请参阅修改数据库参数组中的参数。
-
在特定客户端会话中(例如在 psql 中)设置,以将值仅限定在该会话中。
您必须在集群或数据库实例级别设置参数 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
设置可能使用查询计划管理的最大数据库对象数量。数据库对象是使用 CREATE DATABASE SQL 语句所创建的内容。
在集群或数据库实例级设置 apg_plan_mgmt.max_databases
。这需要重启数据库实例以使新值生效。
值 | 默认值 | 描述 |
---|---|---|
正整数 | 10 | 一个正整数值。 |
apg_plan_mgmt.max_plans
设置 apg_plan_mgmt.dba_plans
视图中可捕获的计划最大数量。
在集群或数据库实例级设置 apg_plan_mgmt.max_plans
。这需要重启数据库实例以使新值生效。
值 | 默认值 | 描述 |
---|---|---|
integer | 1000 | 一个大于或等于 10 的正整数值。 |
apg_plan_mgmt.pgss_min_calls
该参数已弃用。
设置符合计划捕获条件的 pg_stat_statements
调用的最小数量。
SET apg_plan_mgmt.pgss_min_calls =
integer-value
;
值 | 默认值 | 描述 |
---|---|---|
正整数 | 2 | 一个大于或等于 2 的正整数值。 |
使用说明
需要安装 pg_stat_statements
扩展。有关更多信息,请参阅 PostgreSQL pg_stats_statements 文档
apg_plan_mgmt.pgss_min_mean_time_ms
该参数已弃用。
要符合计划捕获条件所需满足的 pg_stat_statements mean_time
最小值。
SET apg_plan_mgmt.pgss_min_mean_time_ms =
double-value
;
值 | 默认值 | 描述 |
---|---|---|
正数 | 0.0 | 一个大于或等于 0.0 的正数值。 |
使用说明
需要安装 pg_stat_statements
扩展。有关更多信息,请参阅 PostgreSQL pg_stats_statements 文档
apg_plan_mgmt.pgss_min_stddev_time_ms
该参数已弃用。
要符合计划捕获条件所需满足的 pg_stat_statements stddev_time
最小值。
SET apg_plan_mgmt.pgss_min_stddev_time_ms =
double-value
;
值 | 默认值 | 描述 |
---|---|---|
正数 | 0.0 | 一个大于或等于 0.0 的正数值。 |
使用说明
需要安装 pg_stat_statements
扩展。有关更多信息,请参阅 PostgreSQL pg_stats_statements 文档
apg_plan_mgmt.pgss_min_total_time_ms
该参数已弃用。
要符合计划捕获条件所需满足的 pg_stat_statements total_time
最小值。
SET apg_plan_mgmt.pgss_min_total_time_ms =
double-value
;
值 | 默认值 | 描述 |
---|---|---|
正数 | 0.0 | 一个大于或等于 0.0 的正数值。 |
使用说明
需要安装 pg_stat_statements
扩展。有关更多信息,请参阅 PostgreSQL pg_stats_statements 文档
apg_plan_mgmt.plan_retention_period
计划保留在 apg_plan_mgmt.dba_plans
视图中被自动删除之前的天数。计划将在计划的 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
计划(如果可能),否则 -
执行优化程序的最低成本计划。