

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Aurora PostgreSQL 查询计划管理更新
<a name="auroraqpm.updates"></a>

该 Amazon `apg_plan_mgmt`扩展程序为您的 Aurora PostgreSQL 数据库集群提供了查询计划管理功能。它可让您管理优化程序为 SQL 应用程序生成的查询执行计划，以获得更好地稳定性并防止回归。有关更多信息，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

**Topics**
+ [PostgreSQL 17 个版本](#auroraqpm-version17)
+ [PostgreSQL 版本 16](#auroraqpm-version16)
+ [PostgreSQL 版本 15](#auroraqpm-version15)
+ [PostgreSQL 版本 14](#auroraqpm-version14)
+ [PostgreSQL 版本 13](#auroraqpm-version13)
+ [PostgreSQL 版本 12](#auroraqpm-version12)
+ [Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.3 版](#auroraqpm-version.23)
+ [Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.1 版](#auroraqpm-version.21)
+ [Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.0 版](#auroraqpm-version.20)
+ [Aurora PostgreSQL apg\$1plan\$1mgmt 扩展版本 1.0.1](#auroraqpm-version.101)

## PostgreSQL 17 个版本
<a name="auroraqpm-version17"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 17.7 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日](#auroraqpm-version17-177)
+ [适用于 Aurora PostgreSQL 17.5 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日](#auroraqpm-version17-175)
+ [适用于 Aurora PostgreSQL 17.4 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 5 月 1 日](#auroraqpm-version17-174)

### 适用于 Aurora PostgreSQL 17.7 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日
<a name="auroraqpm-version17-177"></a>

Aurora PostgreSQL 17.7 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**扩展改进**
+ 在 “查询计划管理” 中添加了一项改进，可以自动重新捕获从先前版本中存储的参数列表。

### 适用于 Aurora PostgreSQL 17.5 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日
<a name="auroraqpm-version17-175"></a>

Aurora PostgreSQL 17.5 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在 BitmapOr/BitmapAnd 操作员在场时强制执行并行位图扫描的查询计划管理问题。
+ 修复了查询计划管理中的一个问题，即强制执行将多个表分区联接到一个表分区的计划。
+ 修复了在查询计划管理中强制在单个表分区之上使用追加节点的问题。
+ 查询计划管理中的`apg_plan_mgmt`角色已保留，用户无法再创建、更改或删除。
+ 修复了处理先前版本的查询计划管理中的参数列表时出现的问题。

### 适用于 Aurora PostgreSQL 17.4 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 5 月 1 日
<a name="auroraqpm-version17-174"></a>

Aurora PostgreSQL 17.4 版本 2.8 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 查询计划管理可以强制执行具有相关子查询转换的计划。
+ 查询计划管理可以强制执行具有相关子查询缓存的计划。

**其他改进和增强功能**
+ 修复了在查询计划管理中查询`dba_plans`视图或调用`validate_plans`和`evolve_plan_baselines`函数时导致错误或重新启动的参数列表问题。
+ 修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
+ 修复了查询计划管理中的一个问题，即在安装扩展程序或重置共享内存后立即运行实用程序语句。
+ 修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
+ 修复了在查询计划管理中执行、验证和演变计划时出现的问题。

## PostgreSQL 版本 16
<a name="auroraqpm-version16"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 16.11 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日](#auroraqpm-version16-1611)
+ [适用于 Aurora PostgreSQL 16.9 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日](#auroraqpm-version16-169)
+ [适用于 Aurora PostgreSQL 16.8 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日](#auroraqpm-version16-168)
+ [适用于 Aurora PostgreSQL 16.6 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日](#auroraqpm-version16-166)
+ [适用于 Aurora PostgreSQL 16.3 的 apg\$1plan\$1mgmt 版本 2.7](#auroraqpm-version16-163)
+ [适用于 Aurora PostgreSQL 16.2 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version16-162)
+ [适用于 Aurora PostgreSQL 16.1 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version16-161)

### 适用于 Aurora PostgreSQL 16.11 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日
<a name="auroraqpm-version16-1611"></a>

Aurora PostgreSQL 16.11 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**扩展改进**
+ 在 “查询计划管理” 中添加了一项改进，可以自动重新捕获从先前版本中存储的参数列表。

### 适用于 Aurora PostgreSQL 16.9 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日
<a name="auroraqpm-version16-169"></a>

Aurora PostgreSQL 16.9 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在 BitmapOr/BitmapAnd 操作员在场时强制执行并行位图扫描的查询计划管理问题。
+ 修复了查询计划管理中的一个问题，即强制执行将多个表分区联接到一个表分区的计划。
+ 修复了在查询计划管理中强制在单个表分区之上使用追加节点的问题。
+ 查询计划管理中的`apg_plan_mgmt`角色已保留，用户无法再创建、更改或删除。
+ 修复了处理先前版本的查询计划管理中的参数列表时出现的问题。

### 适用于 Aurora PostgreSQL 16.8 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日
<a name="auroraqpm-version16-168"></a>

Aurora PostgreSQL 16.8 版本 2.8 中`apg_plan_mgmt`扩展程序的改进包括以下内容：

**新特征**
+ 查询计划管理可以强制执行具有相关子查询转换的计划。
+ 查询计划管理可以强制执行具有相关子查询缓存的计划。

**其他改进和增强功能**
+ 修复了在查询计划管理中查询`dba_plans`视图或调用`validate_plans`和`evolve_plan_baselines`函数时导致错误或重新启动的参数列表问题。
+ 修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
+ 修复了查询计划管理中的一个问题，即在安装扩展程序或重置共享内存后立即运行实用程序语句。
+ 修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
+ 修复了在查询计划管理中执行、验证和演变计划时出现的问题。

### 适用于 Aurora PostgreSQL 16.6 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日
<a name="auroraqpm-version16-166"></a>

Aurora PostgreSQL 16.6 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了查询计划管理中副本上的计划捕获问题，该问题导致副本中的共享内存数组已满。
+ 修复了查询计划管理后台工作程序的一个问题，该问题导致计划保留期未强制执行，上次使用日期无法更新。
+ 修复了与查询计划管理后台工作人员有关的问题。
+ 修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
+ 修复了查询计划管理中的一个问题，即具有多个查询的函数或过程的计划捕获不正确。
+ 修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
+ 修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。

### 适用于 Aurora PostgreSQL 16.3 的 apg\$1plan\$1mgmt 版本 2.7
<a name="auroraqpm-version16-163"></a>

Aurora PostgreSQL 16.3 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 您不再需要更新`plan_hash_version`。升级数据库引擎后，QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。

**其他改进和增强功能**
+ 修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
+ 修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
+ 修复了带有 update\$1plan\$1hash 操作的 QPM 验证计划的问题。

### 适用于 Aurora PostgreSQL 16.2 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version16-162"></a>

Aurora PostgreSQL 16.2 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以强制执行包含聚合运算符的计划。

**其他改进和增强功能**
+ 修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
+ 修复了强制执行包含视图的计划时出现的问题。
+ 改进了 Parallel Append 计划的执行。
+ 修复了与计划捕获有关的问题。
+ 修复了强制执行包含采集节点的计划时出现的问题。

### 适用于 Aurora PostgreSQL 16.1 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version16-161"></a>

Aurora PostgreSQL 16.1 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 作为 `apg_plan_mgmt.validate_plans` 函数的 `update_plan_hash` 操作的一部分，计划大纲将更新为最新格式版本。
+ 增加了对并行附加执行的支持，以作为并行查询执行的一部分。要正确执行并行附加节点，必须执行以下操作：

  1. 将 `apg_plan_mgmt.plan_hash_version` 设置为 5。

  1. 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。

**其他改进和增强功能**
+ 计划哈希计算的性能改进。
+ 提高了包含重复子计划的计划大纲的内存利用率。
+ 修复了并行查询执行中无法执行 `GatherMerge` 的问题。
+ 修复了所执行计划的估计成本不正确的问题。
+ 修复了大纲中包含分区表和子计划的已批准计划的执行问题。

## PostgreSQL 版本 15
<a name="auroraqpm-version15"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 15.15 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日](#auroraqpm-version15-1515)
+ [适用于 Aurora PostgreSQL 15.13 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日](#auroraqpm-version15-1513)
+ [适用于 Aurora PostgreSQL 15.12 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日](#auroraqpm-version15-1512)
+ [适用于 Aurora PostgreSQL 15.10 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日](#auroraqpm-version15-1510)
+ [适用于 Aurora PostgreSQL 15.8 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 9 月 30 日](#auroraqpm-version15-158)
+ [适用于 Aurora PostgreSQL 15.7 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日](#auroraqpm-version15-157)
+ [适用于 Aurora PostgreSQL 15.6 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version15-156)
+ [适用于 Aurora PostgreSQL 15.5 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version15-155)
+ [适用于 Aurora PostgreSQL 15.4 的 apg\$1plan\$1mgmt 版本 2.5](#auroraqpm-version15-154)
+ [适用于 Aurora PostgreSQL 15.3 的 apg\$1plan\$1mgmt 版本 2.4](#auroraqpm-version15-153)

### 适用于 Aurora PostgreSQL 15.15 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日
<a name="auroraqpm-version15-1515"></a>

Aurora PostgreSQL 15.15 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**扩展改进**
+ 在 “查询计划管理” 中添加了一项改进，可以自动重新捕获从先前版本中存储的参数列表。

### 适用于 Aurora PostgreSQL 15.13 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日
<a name="auroraqpm-version15-1513"></a>

Aurora PostgreSQL 15.13 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在 BitmapOr/BitmapAnd 操作员在场时强制执行并行位图扫描的查询计划管理问题。
+ 修复了查询计划管理中的一个问题，即强制执行将多个表分区联接到一个表分区的计划。
+ 修复了在查询计划管理中强制在单个表分区之上使用追加节点的问题。
+ 查询计划管理中的`apg_plan_mgmt`角色已保留，用户无法再创建、更改或删除。
+ 修复了处理先前版本的查询计划管理中的参数列表时出现的问题。

### 适用于 Aurora PostgreSQL 15.12 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日
<a name="auroraqpm-version15-1512"></a>

Aurora PostgreSQL 15.12 版本 2.8 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在查询计划管理中查询`dba_plans`视图或调用`validate_plans`和`evolve_plan_baselines`函数时导致错误或重新启动的参数列表问题。
+ 修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
+ 修复了查询计划管理中的一个问题，即在安装扩展程序或重置共享内存后立即运行实用程序语句。
+ 修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
+ 修复了在查询计划管理中执行、验证和演变计划时出现的问题。

### 适用于 Aurora PostgreSQL 15.10 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日
<a name="auroraqpm-version15-1510"></a>

Aurora PostgreSQL 15.10 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了查询计划管理中副本上的计划捕获问题，该问题导致副本中的共享内存数组已满。
+ 修复了查询计划管理后台工作程序的一个问题，该问题导致计划保留期未强制执行，上次使用日期无法更新。
+ 修复了与查询计划管理后台工作人员有关的问题。
+ 修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
+ 修复了查询计划管理中的一个问题，即具有多个查询的函数或过程的计划捕获不正确。
+ 修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
+ 修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。

### 适用于 Aurora PostgreSQL 15.8 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 9 月 30 日
<a name="auroraqpm-version15-158"></a>

Aurora PostgreSQL 15.8 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了强制执行包含哈希聚合的查询计划管理计划时出现的问题。

### 适用于 Aurora PostgreSQL 15.7 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日
<a name="auroraqpm-version15-157"></a>

Aurora PostgreSQL 15.7 版本 2.7 中`apg_plan_mgmt`扩展程序的改进包括以下内容：

**新特征**
+ 您不再需要更新`plan_hash_version`。升级数据库引擎后，QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。

**其他改进和增强功能**
+ 修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
+ 修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
+ 修复了带有 update\$1plan\$1hash 操作的 QPM 验证计划的问题。

### 适用于 Aurora PostgreSQL 15.6 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version15-156"></a>

Aurora PostgreSQL 15.6 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以强制执行包含聚合运算符的计划。

**其他改进和增强功能**
+ 修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
+ 修复了强制执行包含视图的计划时出现的问题。
+ 改进了 Parallel Append 计划的执行。
+ 修复了与计划捕获有关的问题。
+ 修复了强制执行包含采集节点的计划时出现的问题。

### 适用于 Aurora PostgreSQL 15.5 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version15-155"></a>

Aurora PostgreSQL 15.5 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 作为 `apg_plan_mgmt.validate_plans` 函数的 `update_plan_hash` 操作的一部分，计划大纲将更新为最新格式版本。
+ 增加了对并行附加执行的支持，以作为并行查询执行的一部分。要正确执行并行附加节点，必须执行以下操作：

  1. 将 `apg_plan_mgmt.plan_hash_version` 设置为 5。

  1. 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。

**其他改进和增强功能**
+ 计划哈希计算的性能改进。
+ 提高了包含重复子计划的计划大纲的内存利用率。
+ 修复了并行查询执行中无法执行 `GatherMerge` 的问题。
+ 修复了所执行计划的估计成本不正确的问题。
+ 修复了大纲中包含分区表和子计划的已批准计划的执行问题。

### 适用于 Aurora PostgreSQL 15.4 的 apg\$1plan\$1mgmt 版本 2.5
<a name="auroraqpm-version15-154"></a>

Aurora PostgreSQL 15.4 版本 2.5 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以执行查询计划以使用除并行附加节点之外的并行运算符。要正确执行并行查询计划，必须在升级到 15.4 或 14.9 后执行以下操作：
  + 将 `apg_plan_mgmt.plan_hash_version` 设置为 4 或以上。
  + 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。
  + 重新捕获 plan\$1outline 中包含 Gather 节点的已批准计划。
+ QPM 可以使用 Materialize 节点执行查询计划。要强制使用 Materialize 节点，必须在升级到 15.4 或 14.9 后执行以下操作：
  + 将 `apg_plan_mgmt.plan_hash_version` 设置为 4 或以上。
  + 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。
+ 要从 Replicas 捕获查询计划，必须通过调用 ALTER EXTENSION apg\$1plan\$1mgmt UPDATE 来更新 `apg_plan_mgmt` 扩展。
+ 您需要指定 `apg_plan_mgmt.plan_capture_threshold`，以便拒绝 QPM 捕获任何查询计划。

**其他改进和增强功能**
+ `plan_hash`计算性能改进。

### 适用于 Aurora PostgreSQL 15.3 的 apg\$1plan\$1mgmt 版本 2.4
<a name="auroraqpm-version15-153"></a>

Aurora PostgreSQL 15.3 版本 2.4 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 引入了新的 GUC auto\$1explain.hashes。将其设置为 true（默认值：false）时，sql\$1hash 和 plan\$1hash 会显示在 auto explain 结果的末尾。
+ 引入了新的 GUC apg\$1plan\$1mgmt.explain\$1hashes。将其设置为 true（默认值：false）时，即使没有 hash true 选项，EXPLAIN 结果也会显示 sql\$1hash 和 plan\$1hash。
+ 引入了新的 GUC apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result。根据其值（默认值：无），计划实施结果将写入 Postgres 日志文件。
+ 引入了新的计划哈希计算版本来支持分区表。用户需要将 apg\$1plan\$1mgmt.plan\$1hash\$1version 设置为 3，并在每个安装了 `apg_plan_mgmt` 的数据库和计划表的条目中调用 apg\$1plan\$1mgmt.validate\$1plans('update\$1plan\$1hash')。
+ QPM 可以使用 Memoize 节点执行查询计划。
+  `apg_plan_mgmt.copy_outline` 函数有了新的第 5 个参数 `force_update_target_plan_hash`。如果将其设置为 true，即使源计划无法重现目标 sql\$1hash，目标计划哈希也会更新。

**其他改进和增强功能**
+ 修复了 JDBC 预编译语句计划执行的问题。
+ 改进了 pg\$1stat\$1statements 和 apg\$1plan\$1mgmt.dba\$1plans 之间关于 queryid 的奇偶校验。
+ 修复了索引名称以数字结尾时的计划执行问题。
+  The apg\$1plan\$1mgmt.copy\$1outline 函数现在可以复制环境变量。
+  apg\$1plan\$1mgmt.plan\$1retention\$1period 的最小值从 32 更改为 1。
+  查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
+  修复了 apg\$1plan\$1mgmt.evolve\$1plan\$1baselines 函数的问题。
+  修复了启用 apg\$1plan\$1mgmt 时可能导致不可用的问题。

要了解如何安装、升级和使用 `apg_plan_mgmt` 扩展，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

## PostgreSQL 版本 14
<a name="auroraqpm-version14"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 14.20 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日](#auroraqpm-version14-1420)
+ [适用于 Aurora PostgreSQL 14.18 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日](#auroraqpm-version14-1418)
+ [适用于 Aurora PostgreSQL 14.17 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日](#auroraqpm-version14-1417)
+ [适用于 Aurora PostgreSQL 14.15 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日](#auroraqpm-version14-1415)
+ [适用于 Aurora PostgreSQL 14.12 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日](#auroraqpm-version14-1412)
+ [适用于 Aurora PostgreSQL 14.11 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version14-1411)
+ [适用于 Aurora PostgreSQL 14.10 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version14-1410)
+ [适用于 Aurora PostgreSQL 14.9 的 apg\$1plan\$1mgmt 版本 2.5](#auroraqpm-version14-149)
+ [适用于 Aurora PostgreSQL 14.8 的 apg\$1plan\$1mgmt 版本 2.4](#auroraqpm-version14-148)

### 适用于 Aurora PostgreSQL 14.20 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日
<a name="auroraqpm-version14-1420"></a>

Aurora PostgreSQL 14.20 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**扩展改进**
+ 在 “查询计划管理” 中添加了一项改进，可以自动重新捕获从先前版本中存储的参数列表。

### 适用于 Aurora PostgreSQL 14.18 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日
<a name="auroraqpm-version14-1418"></a>

Aurora PostgreSQL 14.18 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在 BitmapOr/BitmapAnd 操作员在场时强制执行并行位图扫描的查询计划管理问题。
+ 修复了查询计划管理中的一个问题，即强制执行将多个表分区联接到一个表分区的计划。
+ 修复了在查询计划管理中强制在单个表分区之上使用追加节点的问题。
+ 查询计划管理中的`apg_plan_mgmt`角色已保留，用户无法再创建、更改或删除。
+ 修复了处理先前版本的查询计划管理中的参数列表时出现的问题。

### 适用于 Aurora PostgreSQL 14.17 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日
<a name="auroraqpm-version14-1417"></a>

Aurora PostgreSQL 14.17 版本 2.8 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在查询计划管理中查询`dba_plans`视图或调用`validate_plans`和`evolve_plan_baselines`函数时导致错误或重新启动的参数列表问题。
+ 修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
+ 修复了查询计划管理中的一个问题，即在安装扩展程序或重置共享内存后立即运行实用程序语句。
+ 修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
+ 修复了在查询计划管理中执行、验证和演变计划时出现的问题。

### 适用于 Aurora PostgreSQL 14.15 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日
<a name="auroraqpm-version14-1415"></a>

Aurora PostgreSQL 14.15 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了查询计划管理中副本上的计划捕获问题，该问题导致副本中的共享内存数组已满。
+ 修复了查询计划管理后台工作程序的一个问题，该问题导致计划保留期未强制执行，上次使用日期无法更新。
+ 修复了与查询计划管理后台工作人员有关的问题。
+ 修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
+ 修复了查询计划管理中的一个问题，即具有多个查询的函数或过程的计划捕获不正确。
+ 修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
+ 修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。

### 适用于 Aurora PostgreSQL 14.12 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日
<a name="auroraqpm-version14-1412"></a>

Aurora PostgreSQL 14.12 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 您不再需要更新`plan_hash_version`。升级数据库引擎后，QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。

**其他改进和增强功能**
+ 修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
+ 修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
+ 修复了带有 update\$1plan\$1hash 操作的 QPM 验证计划的问题。

### 适用于 Aurora PostgreSQL 14.11 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version14-1411"></a>

Aurora PostgreSQL 14.11 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以强制执行包含聚合运算符的计划。

**其他改进和增强功能**
+ 修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
+ 修复了强制执行包含视图的计划时出现的问题。
+ 改进了 Parallel Append 计划的执行。
+ 修复了与计划捕获有关的问题。
+ 修复了强制执行包含采集节点的计划时出现的问题。

### 适用于 Aurora PostgreSQL 14.10 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version14-1410"></a>

Aurora PostgreSQL 14.10 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 作为 `apg_plan_mgmt.validate_plans` 函数的 `update_plan_hash` 操作的一部分，计划大纲将更新为最新格式版本。
+ 增加了对并行附加执行的支持，以作为并行查询执行的一部分。要正确执行并行附加节点，必须执行以下操作：

  1. 将 `apg_plan_mgmt.plan_hash_version` 设置为 5。

  1. 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。

**其他改进和增强功能**
+ 计划哈希计算的性能改进。
+ 提高了包含重复子计划的计划大纲的内存利用率。
+ 修复了并行查询执行中无法执行 `GatherMerge` 的问题。
+ 修复了所执行计划的估计成本不正确的问题。
+ 修复了大纲中包含分区表和子计划的已批准计划的执行问题。

### 适用于 Aurora PostgreSQL 14.9 的 apg\$1plan\$1mgmt 版本 2.5
<a name="auroraqpm-version14-149"></a>

Aurora PostgreSQL 14.9 版本 2.5 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以执行查询计划以使用除并行附加节点之外的并行运算符。要正确执行并行查询计划，必须在升级到 15.4 或 14.9 后执行以下操作：
  + 将 `apg_plan_mgmt.plan_hash_version` 设置为 4 或以上。
  + 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。
  + 重新捕获 plan\$1outline 中包含 Gather 节点的已批准计划。
+ QPM 可以使用 Materialize 节点执行查询计划。要强制使用 Materialize 节点，必须在升级到 15.4 或 14.9 后执行以下操作：
  + 将 `apg_plan_mgmt.plan_hash_version` 设置为 4 或以上。
  + 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。
+ 要从 Replicas 捕获查询计划，必须通过调用 ALTER EXTENSION apg\$1plan\$1mgmt UPDATE 来更新 `apg_plan_mgmt` 扩展。
+ 您需要指定 `apg_plan_mgmt.plan_capture_threshold`，以便拒绝 QPM 捕获任何查询计划。

**其他改进和增强功能**
+ `plan_hash`计算性能改进。

### 适用于 Aurora PostgreSQL 14.8 的 apg\$1plan\$1mgmt 版本 2.4
<a name="auroraqpm-version14-148"></a>

Aurora PostgreSQL 14.8 版本 2.4 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 引入了新的 GUC auto\$1explain.hashes。将其设置为 true（默认值：false）时，sql\$1hash 和 plan\$1hash 会显示在 auto explain 结果的末尾。
+ 引入了新的 GUC apg\$1plan\$1mgmt.explain\$1hashes。将其设置为 true（默认值：false）时，即使没有 hash true 选项，EXPLAIN 结果也会显示 sql\$1hash 和 plan\$1hash。
+ 引入了新的 GUC apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result。根据其值（默认值：无），计划实施结果将写入 Postgres 日志文件。
+ 引入了新的计划哈希计算版本来支持分区表。用户需要将 apg\$1plan\$1mgmt.plan\$1hash\$1version 设置为 3，并在每个安装了 `apg_plan_mgmt` 的数据库和计划表的条目中调用 apg\$1plan\$1mgmt.validate\$1plans('update\$1plan\$1hash')。
+ QPM 可以使用 Memoize 节点执行查询计划。
+  `apg_plan_mgmt.copy_outline` 函数有了新的第 5 个参数 `force_update_target_plan_hash`。如果将其设置为 true，即使源计划无法重现目标 sql\$1hash，目标计划哈希也会更新。

**其他改进和增强功能**
+ 修复了 JDBC 预编译语句计划执行的问题。
+ 改进了 pg\$1stat\$1statements 和 apg\$1plan\$1mgmt.dba\$1plans 之间关于 queryid 的奇偶校验。
+ 修复了索引名称以数字结尾时的计划执行问题。
+  The apg\$1plan\$1mgmt.copy\$1outline 函数现在可以复制环境变量。
+  apg\$1plan\$1mgmt.plan\$1retention\$1period 的最小值从 32 更改为 1。
+  查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
+  修复了 apg\$1plan\$1mgmt.evolve\$1plan\$1baselines 函数的问题。
+  修复了启用 apg\$1plan\$1mgmt 时可能导致不可用的问题。

要了解如何安装、升级和使用 `apg_plan_mgmt` 扩展，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

## PostgreSQL 版本 13
<a name="auroraqpm-version13"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 13.23 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日](#auroraqpm-version13-1323)
+ [适用于 Aurora PostgreSQL 13.21 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日](#auroraqpm-version13-1321)
+ [适用于 Aurora PostgreSQL 13.20 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日](#auroraqpm-version13-1320)
+ [适用于 Aurora PostgreSQL 13.18 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日](#auroraqpm-version13-1318)
+ [适用于 Aurora PostgreSQL 13.15 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日](#auroraqpm-version13-1315)
+ [适用于 Aurora PostgreSQL 13.14 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version13-1314)
+ [适用于 Aurora PostgreSQL 13.13 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version13-1313)
+ [适用于 Aurora PostgreSQL 13.12 的 apg\$1plan\$1mgmt 版本 2.5](#auroraqpm-version13-1312)
+ [适用于 Aurora PostgreSQL 13.11 的 apg\$1plan\$1mgmt 版本 2.4](#auroraqpm-version13-1311)

### 适用于 Aurora PostgreSQL 13.23 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 12 月 18 日
<a name="auroraqpm-version13-1323"></a>

Aurora PostgreSQL 13.23 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**扩展改进**
+ 在 “查询计划管理” 中添加了一项改进，可以自动重新捕获从先前版本中存储的参数列表。

### 适用于 Aurora PostgreSQL 13.21 的 apg\$1plan\$1mgmt 版本 2.9，2025 年 6 月 30 日
<a name="auroraqpm-version13-1321"></a>

Aurora PostgreSQL 13.21 版本 2.9 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在 BitmapOr/BitmapAnd 操作员在场时强制执行并行位图扫描的查询计划管理问题。
+ 修复了查询计划管理中的一个问题，即强制执行将多个表分区联接到一个表分区的计划。
+ 修复了在查询计划管理中强制在单个表分区之上使用追加节点的问题。
+ 查询计划管理中的`apg_plan_mgmt`角色已保留，用户无法再创建、更改或删除。
+ 修复了处理先前版本的 “查询计划管理” 中的参数列表时出现的问题。

### 适用于 Aurora PostgreSQL 13.20 的 apg\$1plan\$1mgmt 版本 2.8，2025 年 4 月 8 日
<a name="auroraqpm-version13-1320"></a>

Aurora PostgreSQL 13.20 版本 2.8 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了在查询计划管理中查询`dba_plans`视图或调用`validate_plans`和`evolve_plan_baselines`函数时导致错误或重新启动的参数列表问题。
+ 修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
+ 修复了查询计划管理中的一个问题，即在安装扩展程序或重置共享内存后立即运行实用程序语句。
+ 修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
+ 修复了在查询计划管理中执行、验证和演变计划时出现的问题。

### 适用于 Aurora PostgreSQL 13.18 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日
<a name="auroraqpm-version13-1318"></a>

Aurora PostgreSQL 13.18 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了查询计划管理中副本上的计划捕获问题，该问题导致副本中的共享内存数组已满。
+ 修复了查询计划管理后台工作程序的一个问题，该问题导致计划保留期未强制执行，上次使用日期无法更新。
+ 修复了与查询计划管理后台工作人员有关的问题。
+ 修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
+ 修复了查询计划管理中的一个问题，即具有多个查询的函数或过程的计划捕获不正确。
+ 修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
+ 修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。

### 适用于 Aurora PostgreSQL 13.15 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日
<a name="auroraqpm-version13-1315"></a>

Aurora PostgreSQL 13.15 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 您不再需要更新`plan_hash_version`。升级数据库引擎后，QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。

**其他改进和增强功能**
+ 修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
+ 修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
+ 修复了带有 update\$1plan\$1hash 操作的 QPM 验证计划的问题。

### 适用于 Aurora PostgreSQL 13.14 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version13-1314"></a>

Aurora PostgreSQL 13.14 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以强制执行包含聚合运算符的计划。

**其他改进和增强功能**
+ 修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
+ 修复了强制执行包含视图的计划时出现的问题。
+ 改进了 Parallel Append 计划的执行。
+ 修复了与计划捕获有关的问题。
+ 修复了强制执行包含采集节点的计划时出现的问题。

### 适用于 Aurora PostgreSQL 13.13 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version13-1313"></a>

Aurora PostgreSQL 13.13 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 作为 `apg_plan_mgmt.validate_plans` 函数的 `update_plan_hash` 操作的一部分，计划大纲将更新为最新格式版本。
+ 增加了对并行附加执行的支持，以作为并行查询执行的一部分。要正确执行并行附加节点，必须执行以下操作：

  1. 将 `apg_plan_mgmt.plan_hash_version` 设置为 5。

  1. 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。

**其他改进和增强功能**
+ 计划哈希计算的性能改进。
+ 提高了包含重复子计划的计划大纲的内存利用率。
+ 修复了并行查询执行中无法执行 `GatherMerge` 的问题。
+ 修复了所执行计划的估计成本不正确的问题。
+ 修复了大纲中包含分区表和子计划的已批准计划的执行问题。

### 适用于 Aurora PostgreSQL 13.12 的 apg\$1plan\$1mgmt 版本 2.5
<a name="auroraqpm-version13-1312"></a>

Aurora PostgreSQL 13.12 版本 2.5 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ QPM 可以执行查询计划以使用除并行附加节点之外的并行运算符。要正确执行并行查询计划，必须在升级到 15.4 或 14.9 后执行以下操作：
  + 将 `apg_plan_mgmt.plan_hash_version` 设置为 4 或以上。
  + 调用 `apg_plan_mgmt.validate_plans('update_plan_hash')`。
  + 重新捕获 plan\$1outline 中包含 Gather 节点的已批准计划。
+ 要从 Replicas 捕获查询计划，必须通过调用 ALTER EXTENSION apg\$1plan\$1mgmt UPDATE 来更新 `apg_plan_mgmt` 扩展。
+ 您需要指定 `apg_plan_mgmt.plan_capture_threshold`，以便拒绝 QPM 捕获任何查询计划。

### 适用于 Aurora PostgreSQL 13.11 的 apg\$1plan\$1mgmt 版本 2.4
<a name="auroraqpm-version13-1311"></a>

Aurora PostgreSQL 13.11 版本 2.4 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 引入了新的 GUC auto\$1explain.hashes。将其设置为 true（默认值：false）时，sql\$1hash 和 plan\$1hash 会显示在 auto explain 结果的末尾。
+ 引入了新的 GUC apg\$1plan\$1mgmt.explain\$1hashes。将其设置为 true（默认值：false）时，即使没有 hash true 选项，EXPLAIN 结果也会显示 sql\$1hash 和 plan\$1hash。
+ 引入了新的 GUC apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result。根据其值（默认值：无），计划实施结果将写入 Postgres 日志文件。
+ 引入了新的计划哈希计算版本来支持分区表。用户需要将 apg\$1plan\$1mgmt.plan\$1hash\$1version 设置为 3，并在每个安装了 `apg_plan_mgmt` 的数据库和计划表的条目中调用 apg\$1plan\$1mgmt.validate\$1plans('update\$1plan\$1hash')。
+  `apg_plan_mgmt.copy_outline` 函数有了新的第 5 个参数 `force_update_target_plan_hash`。如果将其设置为 true，即使源计划无法重现目标 sql\$1hash，目标计划哈希也会更新。

**其他改进和增强功能**
+ 修复了 JDBC 预编译语句计划执行的问题。
+ 修复了索引名称以数字结尾时的计划执行问题。
+  The apg\$1plan\$1mgmt.copy\$1outline 函数现在可以复制环境变量。
+  apg\$1plan\$1mgmt.plan\$1retention\$1period 的最小值从 32 更改为 1。
+  查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
+  修复了 apg\$1plan\$1mgmt.evolve\$1plan\$1baselines 函数的问题。
+  修复了启用 apg\$1plan\$1mgmt 时可能导致不可用的问题。

要了解如何安装、升级和使用 `apg_plan_mgmt` 扩展，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

## PostgreSQL 版本 12
<a name="auroraqpm-version12"></a>

**Topics**
+ [适用于 Aurora PostgreSQL 12.22 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日](#auroraqpm-version12-1222)
+ [适用于 Aurora PostgreSQL 12.19 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日](#auroraqpm-version12-1219)
+ [适用于 Aurora PostgreSQL 12.18 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version12-1218)
+ [适用于 Aurora PostgreSQL 12.17 的 apg\$1plan\$1mgmt 版本 2.6](#auroraqpm-version12-1217)
+ [适用于 Aurora PostgreSQL 12.16 的 apg\$1plan\$1mgmt 版本 2.5](#auroraqpm-version12-1216)

### 适用于 Aurora PostgreSQL 12.22 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 12 月 27 日
<a name="auroraqpm-version12-1222"></a>

Aurora PostgreSQL 12.22 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了查询计划管理中副本上的计划捕获问题，该问题导致副本中的共享内存数组已满。
+ 修复了查询计划管理后台工作程序的一个问题，该问题导致计划保留期未强制执行，上次使用日期无法更新。
+ 修复了与查询计划管理后台工作人员有关的问题。

### 适用于 Aurora PostgreSQL 12.19 的 apg\$1plan\$1mgmt 版本 2.7，2024 年 8 月 8 日
<a name="auroraqpm-version12-1219"></a>

Aurora PostgreSQL 12.19 版本 2.7 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 您不再需要更新`plan_hash_version`。升级数据库引擎后，QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。

**其他改进和增强功能**
+ 修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
+ 修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
+ 修复了带有 update\$1plan\$1hash 操作的 QPM 验证计划的问题。

### 适用于 Aurora PostgreSQL 12.18 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version12-1218"></a>

Aurora PostgreSQL 12.18 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**其他改进和增强功能**
+ 修复了与计划捕获有关的问题。

### 适用于 Aurora PostgreSQL 12.17 的 apg\$1plan\$1mgmt 版本 2.6
<a name="auroraqpm-version12-1217"></a>

Aurora PostgreSQL 12.17 版本 2.6 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 作为 `apg_plan_mgmt.validate_plans` 函数的 `update_plan_hash` 操作的一部分，计划大纲将更新为最新格式版本。

### 适用于 Aurora PostgreSQL 12.16 的 apg\$1plan\$1mgmt 版本 2.5
<a name="auroraqpm-version12-1216"></a>

Aurora PostgreSQL 12.16 版本 2.5 中`apg_plan_mgmt`扩展的改进包括以下内容：

**新特征**
+ 要从 Replicas 捕获查询计划，必须通过调用 ALTER EXTENSION apg\$1plan\$1mgmt UPDATE 来更新 `apg_plan_mgmt` 扩展。
+ 您需要指定 `apg_plan_mgmt.plan_capture_threshold`，以便拒绝 QPM 捕获任何查询计划。

## Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.3 版
<a name="auroraqpm-version.23"></a>

2.3 版中对 `apg_plan_mgmt` 扩展的改进包括以下方面：

**新扩展功能**
+ 支持一个新函数，即 `apg_plan_mgmt.copy_outline` 函数。此函数允许您将计划哈希和计划大纲从一个 SQL 哈希和计划哈希复制到另一个 SQL 哈希和计划哈希。如果想将使用提示的计划复制到其他类似语句，又不想在每次出现时都使用内联提示语句，请使用此函数。如果更新查询导致计划无效，此函数会引发错误并回滚更新。有关更多信息，请参阅《Amazon Aurora 用户指南》**中的 [Aurora PostgreSQL 查询计划管理功能参考](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html#AuroraPostgreSQL.Optimize.Functions.copy_outline)。

**扩展改进**
+ 查询计划管理功能现在可以保存过程和 DO-block 中的查询计划。对于 2.3 版之前的 `apg_plan_mgmt` 版本，此功能受限。

要了解如何安装、升级和使用 `apg_plan_mgmt` 扩展，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

## Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.1 版
<a name="auroraqpm-version.21"></a>

Aurora PostgreSQL 11.20 的 2.1 版中对 `apg_plan_mgmt` 扩展的改进包括以下方面：

**Aurora PostgreSQL 11.20 中的新扩展功能**
+ 引入了新的 GUC apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result。根据其值（默认值：无），计划实施结果将写入 Postgres 日志文件。

**Aurora PostgreSQL 11.20 中的扩展改进**
+ 修复了 JDBC 预编译语句计划执行的问题。

要了解如何安装、升级和使用 `apg_plan_mgmt` 扩展，请参阅《Amazon Aurora 用户指南》**中的[管理 Aurora PostgreSQL 的查询执行计划](https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html)。

## Aurora PostgreSQL apg\$1plan\$1mgmt 扩展 2.0 版
<a name="auroraqpm-version.20"></a>

2.0 版中对 `apg_plan_mgmt` 扩展的改进包括以下方面：

**新扩展功能**

1. 现在，您可以管理 SQL 函数中的所有查询，无论它们是否有参数。

1. 现在，你可以管理 PL/pgSQL 函数内部的所有查询，无论它们是否有参数。

1. 现在，您可以管理通用计划中的查询，无论它们是否有参数。要了解有关通用计划与自定义计划的更多信息，请参阅 [PostgreSQL 文档](https://www.postgresql.org/docs/current/sql-prepare.html)中的 `PREPARE` 语句。

1. 现在，您可以使用查询计划管理强制在查询计划中使用特定类型的聚合方法。

**扩展改进**

1. 您现在可以保存大小最多为 `max_worker_processes` 参数设置的 8KB 倍的计划。以前最大计划大小为 8KB。

1. 修复了未命名的预编译语句（如来自 JDBC 的语句）的错误。

1. 以前，当您尝试在 `CREATE EXTENSION apg_plan_mgmt` 未加载 `shared_preload_libraries` 的情况下执行此命令时，PostgreSQL 后端连接已被删除。现在，会显示一条错误消息，并且连接不会被删除。

1. `cardinality_error` 中 `apg_plan_mgmt.plans table` 的默认值为 NULL，但它在 `apg_plan_mgmt.evolve_plan_baselines` 函数执行期间可以设置为 -1。现在统一使用 NULL。

1. 现在将为引用临时表的查询保存计划。

1. 默认的最大计划数从 1000 增加到 10000。

1. 以下 pgss 参数已被弃用，因为应使用自动计划捕获模式而不是这些参数。
   + `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`

## Aurora PostgreSQL apg\$1plan\$1mgmt 扩展版本 1.0.1
<a name="auroraqpm-version.101"></a>

版本 1.0.1 的 `apg_plan_mgmt` 扩展更改包括以下内容：

**新扩展功能**

1. 该 `validate_plans` 函数具有一个名为 `action` 的新 `update_plan_hash` 值。此操作将更新不能准确重现的计划的 `plan_hash` ID。该 `update_plan_hash` 值还允许您通过重新编写 SQL 来修复计划。然后，您可以将更好的计划注册为初始 SQL 的 `Approved` 计划。以下是使用 `update_plan_hash` 操作的示例。

   ```
   UPDATE apg_plan_mgmt.plans SET plan_hash = new _plan_hash, plan_outline = good_plan_outline
      WHERE sql_hash = bad_plan_sql_hash AND plan_hash = bad_plan_plan_hash;
   SELECT apg_plan_mgmt.validate_plans(bad_plan_sql_hash, bad_plan_plan_hash, 'update_plan_hash');
   SELECT apg_plan_mgmt.reload();
   ```

1. 提供了可以为指定的 SQL 语句生成 `get_explain_stmt` 语句本文的新 `EXPLAIN` 函数。它包括参数 `sql_hash`、`plan_hash` 和 `explain_options`。

   参数 `explain_options` 可以是任何有效的 `EXPLAIN` 选项的逗号分隔列表，如下所示。

   ```
   analyze,verbose,buffers,hashes,format json
   ```

   如果参数 `explain_options` 为 NULL 或是一个空字符串，`get_explain_stmt` 函数将生成简单的 `EXPLAIN` 语句。

   要为您的工作负载或工作负载的一部分创建 `EXPLAIN` 脚本，请使用 `\a`、`\t` 和 `\o` 选项将输出重定向到文件。例如，您可以使用 `EXPLAIN` 按 `pg_stat_statements` 顺序排序的 PostgreSQL `total_time` 视图为排名最高 (top-K) 的语句创建 `DESC` 脚本。

1. “收集并行查询”运算符的准确位置由成本花费确定，可能在一段时间内稍有改变。为防止这些差异使整个计划失效，查询计划管理现在计算同一个 `plan_hash`，即使“收集”运算符在计划树中移至不同位置。

1. 增加了对 pl/pgsql 函数内的非参数化语句的支持。

1. 当 `apg_plan_mgmt` 扩展在同一个集群中的多个数据库上安装，而两个或多个数据库被同时访问时，开销将减少。此外，此版本还修复了这个区域中可能造成计划未存储在共享内存中的错误。

**扩展改进**

1. 对 `evolve_plan_baselines` 函数的改进。

   1. `evolve_plan_baselines` 函数现在对计划中的所有节点计算 `cardinality_error` 指标。使用此指标，您可以识别基数估计错误较大且计划质量更不确定的任何计划。具有高 `cardinality_error` 值的长时间运行语句是进行查询优化的优先选择。

   1. `evolve_plan_baselines` 生成的报告现在包括 `sql_hash`、`plan_hash` 和计划 `status`。

   1. 您现在可以允许 `evolve_plan_baselines` 预先审批 `Rejected` 计划。

   1. `speedup_factor` 的 `evolve_plan_baselines` 的含义现在始终与基准计划相关。例如，1.1 值现在表示比基准计划快 10%。0.9 值表示比基准计划慢 10%。只使用运行时间（而不是总时间）进行对比。

   1. `evolve_plan_baselines` 函数现在通过新的方式预热缓存。具体方法是运行基准计划，然后再运行一次基准计划，然后运行候选计划一次。之前，`evolve_plan_baselines` 运行候选计划两次。这种方法显著增加了运行时间，尤其是会让候选计划变慢。但是，当候选计划使用基准计划中未使用的索引时，运行候选计划两次更可靠。

1. 查询计划管理不再保存引用系统表或视图、临时表或查询计划管理的自有表的计划。

1. 错误修复包括保存后立即缓存计划以及修复造成后端终止的错误。