本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Aurora PostgreSQL 查询计划管理更新
该 Amazon apg_plan_mgmt
扩展程序为您的 Aurora PostgreSQL 数据库集群提供了查询计划管理功能。它可让您管理优化程序为 SQL 应用程序生成的查询执行计划,以获得更好地稳定性并防止回归。有关更多信息,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
主题
PostgreSQL 17 个版本
适用于 Aurora PostgreSQL 17.4 的 apg_plan_mgmt 版本 2.8,2025 年 5 月 1 日
Aurora PostgreSQL 17.4 版本 2.8 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
查询计划管理可以强制执行具有相关子查询转换的计划。
-
查询计划管理可以强制执行具有相关子查询缓存的计划。
其他改进和增强功能
-
修复了在查询计划管理中查询
dba_plans
视图或调用validate_plans
和evolve_plan_baselines
函数时导致错误或重新启动的参数列表问题。 -
修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
-
修复了查询计划管理中的一个问题,即在安装扩展程序或重置共享内存后立即运行实用程序语句。
-
修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
-
修复了在查询计划管理中执行、验证和演变计划时出现的问题。
PostgreSQL 版本 16
主题
适用于 Aurora PostgreSQL 16.8 的 apg_plan_mgmt 版本 2.8,2025 年 4 月 8 日
Aurora PostgreSQL 16.8 版本 2.8 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
查询计划管理可以强制执行具有相关子查询转换的计划。
-
查询计划管理可以强制执行具有相关子查询缓存的计划。
其他改进和增强功能
-
修复了在查询计划管理中查询
dba_plans
视图或调用validate_plans
和evolve_plan_baselines
函数时导致错误或重新启动的参数列表问题。 -
修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
-
修复了查询计划管理中的一个问题,即在安装扩展程序或重置共享内存后立即运行实用程序语句。
-
修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
-
修复了在查询计划管理中执行、验证和演变计划时出现的问题。
适用于 Aurora PostgreSQL 16.6 的 apg_plan_mgmt 版本 2.7,2024 年 12 月 27 日
Aurora PostgreSQL 16.6 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
-
修复了查询计划管理中副本上的计划捕获问题,该问题导致副本中的共享内存数组已满。
-
修复了查询计划管理后台工作程序的一个问题,该问题导致计划保留期未强制执行,上次使用日期无法更新。
-
修复了与查询计划管理后台工作人员有关的问题。
-
修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
-
修复了查询计划管理中的一个问题,即具有多个查询的函数或过程的计划捕获不正确。
-
修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
-
修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。
适用于 Aurora PostgreSQL 16.3 的 apg_plan_mgmt 版本 2.7
Aurora PostgreSQL 16.3 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
您不再需要更新
plan_hash_version
。升级数据库引擎后,QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。
其他改进和增强功能
修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
修复了带有 update_plan_hash 操作的 QPM 验证计划的问题。
适用于 Aurora PostgreSQL 16.2 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 16.2 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
QPM 可以强制执行包含聚合运算符的计划。
其他改进和增强功能
修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
修复了强制执行包含视图的计划时出现的问题。
改进了 Parallel Append 计划的执行。
修复了与计划捕获有关的问题。
-
修复了强制执行包含采集节点的计划时出现的问题。
适用于 Aurora PostgreSQL 16.1 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 16.1 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
作为
apg_plan_mgmt.validate_plans
函数的update_plan_hash
操作的一部分,计划大纲将更新为最新格式版本。 -
增加了对并行附加执行的支持,以作为并行查询执行的一部分。要正确执行并行附加节点,必须执行以下操作:
-
将
apg_plan_mgmt.plan_hash_version
设置为 5。 -
调用
apg_plan_mgmt.validate_plans('update_plan_hash')
。
-
其他改进和增强功能
-
计划哈希计算的性能改进。
-
提高了包含重复子计划的计划大纲的内存利用率。
-
修复了并行查询执行中无法执行
GatherMerge
的问题。 -
修复了所执行计划的估计成本不正确的问题。
-
修复了大纲中包含分区表和子计划的已批准计划的执行问题。
PostgreSQL 版本 15
主题
适用于 Aurora PostgreSQL 15.12 的 apg_plan_mgmt 版本 2.8,2025 年 4 月 8 日
Aurora PostgreSQL 15.12 版本 2.8 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
-
修复了在查询计划管理中查询
dba_plans
视图或调用validate_plans
和evolve_plan_baselines
函数时导致错误或重新启动的参数列表问题。 -
修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
-
修复了查询计划管理中的一个问题,即在安装扩展程序或重置共享内存后立即运行实用程序语句。
-
修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
-
修复了在查询计划管理中执行、验证和演变计划时出现的问题。
适用于 Aurora PostgreSQL 15.10 的 apg_plan_mgmt 版本 2.7,2024 年 12 月 27 日
Aurora PostgreSQL 15.10 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了查询计划管理中副本上的计划捕获问题,该问题导致副本中的共享内存数组已满。
修复了查询计划管理后台工作程序的一个问题,该问题导致计划保留期未强制执行,上次使用日期无法更新。
修复了与查询计划管理后台工作人员有关的问题。
修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
修复了查询计划管理中的一个问题,即具有多个查询的函数或过程的计划捕获不正确。
修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。
适用于 Aurora PostgreSQL 15.8 的 apg_plan_mgmt 版本 2.7,2024 年 9 月 30 日
Aurora PostgreSQL 15.8 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了强制执行包含哈希聚合的查询计划管理计划时出现的问题。
适用于 Aurora PostgreSQL 15.7 的 apg_plan_mgmt 版本 2.7,2024 年 8 月 8 日
Aurora PostgreSQL 15.7 版本 2.7 中apg_plan_mgmt
扩展程序的改进包括以下内容:
新特征
您不再需要更新
plan_hash_version
。升级数据库引擎后,QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。
其他改进和增强功能
修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
修复了带有 update_plan_hash 操作的 QPM 验证计划的问题。
适用于 Aurora PostgreSQL 15.6 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 15.6 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
QPM 可以强制执行包含聚合运算符的计划。
其他改进和增强功能
修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
修复了强制执行包含视图的计划时出现的问题。
改进了 Parallel Append 计划的执行。
修复了与计划捕获有关的问题。
-
修复了强制执行包含采集节点的计划时出现的问题。
适用于 Aurora PostgreSQL 15.5 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 15.5 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
作为
apg_plan_mgmt.validate_plans
函数的update_plan_hash
操作的一部分,计划大纲将更新为最新格式版本。增加了对并行附加执行的支持,以作为并行查询执行的一部分。要正确执行并行附加节点,必须执行以下操作:
将
apg_plan_mgmt.plan_hash_version
设置为 5。调用
apg_plan_mgmt.validate_plans('update_plan_hash')
。
其他改进和增强功能
-
计划哈希计算的性能改进。
-
提高了包含重复子计划的计划大纲的内存利用率。
-
修复了并行查询执行中无法执行
GatherMerge
的问题。 -
修复了所执行计划的估计成本不正确的问题。
-
修复了大纲中包含分区表和子计划的已批准计划的执行问题。
适用于 Aurora PostgreSQL 15.4 的 apg_plan_mgmt 版本 2.5
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_outline 中包含 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_plan_mgmt UPDATE 来更新
apg_plan_mgmt
扩展。 -
您需要指定
apg_plan_mgmt.plan_capture_threshold
,以便拒绝 QPM 捕获任何查询计划。
其他改进和增强功能
plan_hash
计算性能改进。
适用于 Aurora PostgreSQL 15.3 的 apg_plan_mgmt 版本 2.4
Aurora PostgreSQL 15.3 版本 2.4 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
引入了新的 GUC auto_explain.hashes。将其设置为 true(默认值:false)时,sql_hash 和 plan_hash 会显示在 auto explain 结果的末尾。
-
引入了新的 GUC apg_plan_mgmt.explain_hashes。将其设置为 true(默认值:false)时,即使没有 hash true 选项,EXPLAIN 结果也会显示 sql_hash 和 plan_hash。
-
引入了新的 GUC apg_plan_mgmt.log_plan_enforcement_result。根据其值(默认值:无),计划实施结果将写入 Postgres 日志文件。
-
引入了新的计划哈希计算版本来支持分区表。用户需要将 apg_plan_mgmt.plan_hash_version 设置为 3,并在每个安装了
apg_plan_mgmt
的数据库和计划表的条目中调用 apg_plan_mgmt.validate_plans('update_plan_hash')。 -
QPM 可以使用 Memoize 节点执行查询计划。
-
apg_plan_mgmt.copy_outline
函数有了新的第 5 个参数force_update_target_plan_hash
。如果将其设置为 true,即使源计划无法重现目标 sql_hash,目标计划哈希也会更新。
其他改进和增强功能
-
修复了 JDBC 预编译语句计划执行的问题。
-
改进了 pg_stat_statements 和 apg_plan_mgmt.dba_plans 之间关于 queryid 的奇偶校验。
-
修复了索引名称以数字结尾时的计划执行问题。
-
The apg_plan_mgmt.copy_outline 函数现在可以复制环境变量。
-
apg_plan_mgmt.plan_retention_period 的最小值从 32 更改为 1。
-
查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
-
修复了 apg_plan_mgmt.evolve_plan_baselines 函数的问题。
-
修复了启用 apg_plan_mgmt 时可能导致不可用的问题。
要了解如何安装、升级和使用 apg_plan_mgmt
扩展,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
PostgreSQL 版本 14
主题
适用于 Aurora PostgreSQL 14.17 的 apg_plan_mgmt 版本 2.8,2025 年 4 月 8 日
Aurora PostgreSQL 14.17 版本 2.8 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
-
修复了在查询计划管理中查询
dba_plans
视图或调用validate_plans
和evolve_plan_baselines
函数时导致错误或重新启动的参数列表问题。 -
修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
-
修复了查询计划管理中的一个问题,即在安装扩展程序或重置共享内存后立即运行实用程序语句。
-
修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
-
修复了在查询计划管理中执行、验证和演变计划时出现的问题。
适用于 Aurora PostgreSQL 14.15 的 apg_plan_mgmt 版本 2.7,2024 年 12 月 27 日
Aurora PostgreSQL 14.15 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了查询计划管理中副本上的计划捕获问题,该问题导致副本中的共享内存数组已满。
修复了查询计划管理后台工作程序的一个问题,该问题导致计划保留期未强制执行,上次使用日期无法更新。
修复了与查询计划管理后台工作人员有关的问题。
修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
修复了查询计划管理中的一个问题,即具有多个查询的函数或过程的计划捕获不正确。
修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。
适用于 Aurora PostgreSQL 14.12 的 apg_plan_mgmt 版本 2.7,2024 年 8 月 8 日
Aurora PostgreSQL 14.12 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
您不再需要更新
plan_hash_version
。升级数据库引擎后,QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。
其他改进和增强功能
修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
修复了带有 update_plan_hash 操作的 QPM 验证计划的问题。
适用于 Aurora PostgreSQL 14.11 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 14.11 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
QPM 可以强制执行包含聚合运算符的计划。
其他改进和增强功能
修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
修复了强制执行包含视图的计划时出现的问题。
改进了 Parallel Append 计划的执行。
修复了与计划捕获有关的问题。
-
修复了强制执行包含采集节点的计划时出现的问题。
适用于 Aurora PostgreSQL 14.10 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 14.10 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
作为
apg_plan_mgmt.validate_plans
函数的update_plan_hash
操作的一部分,计划大纲将更新为最新格式版本。增加了对并行附加执行的支持,以作为并行查询执行的一部分。要正确执行并行附加节点,必须执行以下操作:
将
apg_plan_mgmt.plan_hash_version
设置为 5。调用
apg_plan_mgmt.validate_plans('update_plan_hash')
。
其他改进和增强功能
-
计划哈希计算的性能改进。
-
提高了包含重复子计划的计划大纲的内存利用率。
-
修复了并行查询执行中无法执行
GatherMerge
的问题。 -
修复了所执行计划的估计成本不正确的问题。
-
修复了大纲中包含分区表和子计划的已批准计划的执行问题。
适用于 Aurora PostgreSQL 14.9 的 apg_plan_mgmt 版本 2.5
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_outline 中包含 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_plan_mgmt UPDATE 来更新
apg_plan_mgmt
扩展。 -
您需要指定
apg_plan_mgmt.plan_capture_threshold
,以便拒绝 QPM 捕获任何查询计划。
其他改进和增强功能
plan_hash
计算性能改进。
适用于 Aurora PostgreSQL 14.8 的 apg_plan_mgmt 版本 2.4
Aurora PostgreSQL 14.8 版本 2.4 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
引入了新的 GUC auto_explain.hashes。将其设置为 true(默认值:false)时,sql_hash 和 plan_hash 会显示在 auto explain 结果的末尾。
-
引入了新的 GUC apg_plan_mgmt.explain_hashes。将其设置为 true(默认值:false)时,即使没有 hash true 选项,EXPLAIN 结果也会显示 sql_hash 和 plan_hash。
-
引入了新的 GUC apg_plan_mgmt.log_plan_enforcement_result。根据其值(默认值:无),计划实施结果将写入 Postgres 日志文件。
-
引入了新的计划哈希计算版本来支持分区表。用户需要将 apg_plan_mgmt.plan_hash_version 设置为 3,并在每个安装了
apg_plan_mgmt
的数据库和计划表的条目中调用 apg_plan_mgmt.validate_plans('update_plan_hash')。 -
QPM 可以使用 Memoize 节点执行查询计划。
-
apg_plan_mgmt.copy_outline
函数有了新的第 5 个参数force_update_target_plan_hash
。如果将其设置为 true,即使源计划无法重现目标 sql_hash,目标计划哈希也会更新。
其他改进和增强功能
-
修复了 JDBC 预编译语句计划执行的问题。
-
改进了 pg_stat_statements 和 apg_plan_mgmt.dba_plans 之间关于 queryid 的奇偶校验。
-
修复了索引名称以数字结尾时的计划执行问题。
-
The apg_plan_mgmt.copy_outline 函数现在可以复制环境变量。
-
apg_plan_mgmt.plan_retention_period 的最小值从 32 更改为 1。
-
查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
-
修复了 apg_plan_mgmt.evolve_plan_baselines 函数的问题。
-
修复了启用 apg_plan_mgmt 时可能导致不可用的问题。
要了解如何安装、升级和使用 apg_plan_mgmt
扩展,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
PostgreSQL 版本 13
主题
适用于 Aurora PostgreSQL 13.20 的 apg_plan_mgmt 版本 2.8,2025 年 4 月 8 日
Aurora PostgreSQL 13.20 版本 2.8 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
-
修复了在查询计划管理中查询
dba_plans
视图或调用validate_plans
和evolve_plan_baselines
函数时导致错误或重新启动的参数列表问题。 -
修复了通过关联查询计划管理中的任何转换来优化的计划的强制执行问题。
-
修复了查询计划管理中的一个问题,即在安装扩展程序或重置共享内存后立即运行实用程序语句。
-
修复了通过在查询计划管理中调用不可变函数来执行、验证和演变查询计划时出现的问题。
-
修复了在查询计划管理中执行、验证和演变计划时出现的问题。
适用于 Aurora PostgreSQL 13.18 的 apg_plan_mgmt 版本 2.7,2024 年 12 月 27 日
Aurora PostgreSQL 13.18 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了查询计划管理中副本上的计划捕获问题,该问题导致副本中的共享内存数组已满。
修复了查询计划管理后台工作程序的一个问题,该问题导致计划保留期未强制执行,上次使用日期无法更新。
修复了与查询计划管理后台工作人员有关的问题。
修复了强制执行包含位图扫描的查询计划管理计划时出现的问题。
修复了查询计划管理中的一个问题,即具有多个查询的函数或过程的计划捕获不正确。
修复了在查询计划管理中捕获嵌套查询执行计划时出现的问题。
修复了使用扩展查询协议在查询计划管理中捕获计划时出现的问题。
适用于 Aurora PostgreSQL 13.15 的 apg_plan_mgmt 版本 2.7,2024 年 8 月 8 日
Aurora PostgreSQL 13.15 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
您不再需要更新
plan_hash_version
。升级数据库引擎后,QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。
其他改进和增强功能
修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
修复了带有 update_plan_hash 操作的 QPM 验证计划的问题。
适用于 Aurora PostgreSQL 13.14 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 13.14 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
QPM 可以强制执行包含聚合运算符的计划。
其他改进和增强功能
修复了删除数据库不会从共享内存中移除已捕获的关联计划的问题。
修复了强制执行包含视图的计划时出现的问题。
改进了 Parallel Append 计划的执行。
修复了与计划捕获有关的问题。
-
修复了强制执行包含采集节点的计划时出现的问题。
适用于 Aurora PostgreSQL 13.13 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 13.13 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
作为
apg_plan_mgmt.validate_plans
函数的update_plan_hash
操作的一部分,计划大纲将更新为最新格式版本。增加了对并行附加执行的支持,以作为并行查询执行的一部分。要正确执行并行附加节点,必须执行以下操作:
将
apg_plan_mgmt.plan_hash_version
设置为 5。调用
apg_plan_mgmt.validate_plans('update_plan_hash')
。
其他改进和增强功能
-
计划哈希计算的性能改进。
-
提高了包含重复子计划的计划大纲的内存利用率。
-
修复了并行查询执行中无法执行
GatherMerge
的问题。 -
修复了所执行计划的估计成本不正确的问题。
-
修复了大纲中包含分区表和子计划的已批准计划的执行问题。
适用于 Aurora PostgreSQL 13.12 的 apg_plan_mgmt 版本 2.5
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_outline 中包含 Gather 节点的已批准计划。
-
要从 Replicas 捕获查询计划,必须通过调用 ALTER EXTENSION apg_plan_mgmt UPDATE 来更新
apg_plan_mgmt
扩展。 -
您需要指定
apg_plan_mgmt.plan_capture_threshold
,以便拒绝 QPM 捕获任何查询计划。
适用于 Aurora PostgreSQL 13.11 的 apg_plan_mgmt 版本 2.4
Aurora PostgreSQL 13.11 版本 2.4 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
引入了新的 GUC auto_explain.hashes。将其设置为 true(默认值:false)时,sql_hash 和 plan_hash 会显示在 auto explain 结果的末尾。
-
引入了新的 GUC apg_plan_mgmt.explain_hashes。将其设置为 true(默认值:false)时,即使没有 hash true 选项,EXPLAIN 结果也会显示 sql_hash 和 plan_hash。
-
引入了新的 GUC apg_plan_mgmt.log_plan_enforcement_result。根据其值(默认值:无),计划实施结果将写入 Postgres 日志文件。
-
引入了新的计划哈希计算版本来支持分区表。用户需要将 apg_plan_mgmt.plan_hash_version 设置为 3,并在每个安装了
apg_plan_mgmt
的数据库和计划表的条目中调用 apg_plan_mgmt.validate_plans('update_plan_hash')。 -
apg_plan_mgmt.copy_outline
函数有了新的第 5 个参数force_update_target_plan_hash
。如果将其设置为 true,即使源计划无法重现目标 sql_hash,目标计划哈希也会更新。
其他改进和增强功能
-
修复了 JDBC 预编译语句计划执行的问题。
-
修复了索引名称以数字结尾时的计划执行问题。
-
The apg_plan_mgmt.copy_outline 函数现在可以复制环境变量。
-
apg_plan_mgmt.plan_retention_period 的最小值从 32 更改为 1。
-
查询计划管理现在可以将查询计划保存在写入节点的只读事务中。
-
修复了 apg_plan_mgmt.evolve_plan_baselines 函数的问题。
-
修复了启用 apg_plan_mgmt 时可能导致不可用的问题。
要了解如何安装、升级和使用 apg_plan_mgmt
扩展,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
PostgreSQL 版本 12
主题
适用于 Aurora PostgreSQL 12.22 的 apg_plan_mgmt 版本 2.7,2024 年 12 月 27 日
Aurora PostgreSQL 12.22 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了查询计划管理中副本上的计划捕获问题,该问题导致副本中的共享内存数组已满。
修复了查询计划管理后台工作程序的一个问题,该问题导致计划保留期未强制执行,上次使用日期无法更新。
修复了与查询计划管理后台工作人员有关的问题。
适用于 Aurora PostgreSQL 12.19 的 apg_plan_mgmt 版本 2.7,2024 年 8 月 8 日
Aurora PostgreSQL 12.19 版本 2.7 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
您不再需要更新
plan_hash_version
。升级数据库引擎后,QPM 会自动启用新功能。您无需采取任何措施即可使用新功能。
其他改进和增强功能
修复了强制执行包含超过 64 个分区表的 QPM 计划时出现的问题。
修复了在强制执行包含 Append 运算符的 QPM 计划时出现的问题。
修复了带有 update_plan_hash 操作的 QPM 验证计划的问题。
适用于 Aurora PostgreSQL 12.18 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 12.18 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
其他改进和增强功能
修复了与计划捕获有关的问题。
适用于 Aurora PostgreSQL 12.17 的 apg_plan_mgmt 版本 2.6
Aurora PostgreSQL 12.17 版本 2.6 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
作为
apg_plan_mgmt.validate_plans
函数的update_plan_hash
操作的一部分,计划大纲将更新为最新格式版本。
适用于 Aurora PostgreSQL 12.16 的 apg_plan_mgmt 版本 2.5
Aurora PostgreSQL 12.16 版本 2.5 中apg_plan_mgmt
扩展的改进包括以下内容:
新特征
-
要从 Replicas 捕获查询计划,必须通过调用 ALTER EXTENSION apg_plan_mgmt UPDATE 来更新
apg_plan_mgmt
扩展。 -
您需要指定
apg_plan_mgmt.plan_capture_threshold
,以便拒绝 QPM 捕获任何查询计划。
Aurora PostgreSQL apg_plan_mgmt 扩展 2.3 版
2.3 版中对 apg_plan_mgmt
扩展的改进包括以下方面:
新扩展功能
支持一个新函数,即
apg_plan_mgmt.copy_outline
函数。此函数允许您将计划哈希和计划大纲从一个 SQL 哈希和计划哈希复制到另一个 SQL 哈希和计划哈希。如果想将使用提示的计划复制到其他类似语句,又不想在每次出现时都使用内联提示语句,请使用此函数。如果更新查询导致计划无效,此函数会引发错误并回滚更新。有关更多信息,请参阅《Amazon Aurora 用户指南》中的 Aurora PostgreSQL 查询计划管理功能参考。
扩展改进
-
查询计划管理功能现在可以保存过程和 DO-block 中的查询计划。对于 2.3 版之前的
apg_plan_mgmt
版本,此功能受限。
要了解如何安装、升级和使用 apg_plan_mgmt
扩展,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
Aurora PostgreSQL apg_plan_mgmt 扩展 2.1 版
Aurora PostgreSQL 11.20 的 2.1 版中对 apg_plan_mgmt
扩展的改进包括以下方面:
Aurora PostgreSQL 11.20 中的新扩展功能
-
引入了新的 GUC apg_plan_mgmt.log_plan_enforcement_result。根据其值(默认值:无),计划实施结果将写入 Postgres 日志文件。
Aurora PostgreSQL 11.20 中的扩展改进
-
修复了 JDBC 预编译语句计划执行的问题。
要了解如何安装、升级和使用 apg_plan_mgmt
扩展,请参阅《Amazon Aurora 用户指南》中的管理 Aurora PostgreSQL 的查询执行计划。
Aurora PostgreSQL apg_plan_mgmt 扩展 2.0 版
2.0 版中对 apg_plan_mgmt
扩展的改进包括以下方面:
新扩展功能
-
现在,您可以管理 SQL 函数中的所有查询,无论它们是否有参数。
-
现在,您可以管理 PL/pgSQL 函数中的所有查询,无论它们是否有参数。
-
现在,您可以管理通用计划中的查询,无论它们是否有参数。要了解有关通用计划与自定义计划的更多信息,请参阅 PostgreSQL 文档
中的 PREPARE
语句。 -
现在,您可以使用查询计划管理强制在查询计划中使用特定类型的聚合方法。
扩展改进
-
您现在可以保存大小最多为
max_worker_processes
参数设置的 8KB 倍的计划。以前最大计划大小为 8KB。 -
修复了未命名的预编译语句(如来自 JDBC 的语句)的错误。
-
以前,当您尝试在
CREATE EXTENSION apg_plan_mgmt
未加载shared_preload_libraries
的情况下执行此命令时,PostgreSQL 后端连接已被删除。现在,会显示一条错误消息,并且连接不会被删除。 -
cardinality_error
中apg_plan_mgmt.plans table
的默认值为 NULL,但它在apg_plan_mgmt.evolve_plan_baselines
函数执行期间可以设置为 -1。现在统一使用 NULL。 -
现在将为引用临时表的查询保存计划。
-
默认的最大计划数从 1000 增加到 10000。
-
以下 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_plan_mgmt 扩展版本 1.0.1
版本 1.0.1 的 apg_plan_mgmt
扩展更改包括以下内容:
新扩展功能
-
该
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(); -
提供了可以为指定的 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
顺序排序的 PostgreSQLtotal_time
视图为排名最高 (top-K) 的语句创建DESC
脚本。 -
“收集并行查询”运算符的准确位置由成本花费确定,可能在一段时间内稍有改变。为防止这些差异使整个计划失效,查询计划管理现在计算同一个
plan_hash
,即使“收集”运算符在计划树中移至不同位置。 -
增加了对 pl/pgsql 函数内的非参数化语句的支持。
-
当
apg_plan_mgmt
扩展在同一个集群中的多个数据库上安装,而两个或多个数据库被同时访问时,开销将减少。此外,此版本还修复了这个区域中可能造成计划未存储在共享内存中的错误。
扩展改进
-
对
evolve_plan_baselines
函数的改进。-
evolve_plan_baselines
函数现在对计划中的所有节点计算cardinality_error
指标。使用此指标,您可以识别基数估计错误较大且计划质量更不确定的任何计划。具有高cardinality_error
值的长时间运行语句是进行查询优化的优先选择。 -
evolve_plan_baselines
生成的报告现在包括sql_hash
、plan_hash
和计划status
。 -
您现在可以允许
evolve_plan_baselines
预先审批Rejected
计划。 -
speedup_factor
的evolve_plan_baselines
的含义现在始终与基准计划相关。例如,1.1 值现在表示比基准计划快 10%。0.9 值表示比基准计划慢 10%。只使用运行时间(而不是总时间)进行对比。 -
evolve_plan_baselines
函数现在通过新的方式预热缓存。具体方法是运行基准计划,然后再运行一次基准计划,然后运行候选计划一次。之前,evolve_plan_baselines
运行候选计划两次。这种方法显著增加了运行时间,尤其是会让候选计划变慢。但是,当候选计划使用基准计划中未使用的索引时,运行候选计划两次更可靠。
-
-
查询计划管理不再保存引用系统表或视图、临时表或查询计划管理的自有表的计划。
-
错误修复包括保存后立即缓存计划以及修复造成后端终止的错误。