Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 apg_plan_mgmt.dba_plans 视图中检查计划

查询计划管理为数据库管理员 (DBA) 用于调用 apg_plan_mgmt.dba_plans 的新 SQL 视图。数据库实例中的各个数据库具有自己的 apg_plan_mgmt.dba_plans 视图。

此视图包含您的所有托管语句的计划历史记录。每个托管计划由 SQL 哈希值和计划哈希值的组合来标识。通过这些标识符,您可以使用 Amazon RDS Performance Insights 等工具来跟踪单独计划的性能。有关 Performance Insights 的更多信息,请参阅使用 Amazon RDS Performance Insights

注意

对于具有 apg_plan_mgmt 角色的用户,限制其访问 apg_plan_mgmt.dba_plans 视图。

列出托管计划

要列出托管计划,请在 apg_plan_mgmt.dba_plans 视图上使用 SELECT 语句。以下示例显示 dba_plans 视图中的一些列,例如 status,以标识已批准和未批准计划。

SELECT sql_hash, plan_hash, status, enabled, stmt_name FROM apg_plan_mgmt.dba_plans; sql_hash | plan_hash | status | enabled | stmt_name ------------+-----------+------------+---------+------------ 1984047223 | 512153379 | approved | t | rangequery 1984047223 | 512284451 | unapproved | t | rangequery (2 rows)

apg_plan_mgmt.dba_plans 视图参考

apg_plan_mgmt.dba_plans 视图中的计划信息列包括下列内容。

dba_plans 列 描述
cardinality_error

对估计基数与实际基数之间错误的测量。基数 是计划将处理的表行数。如果基数错误过大,则会增加计划并非最优的可能性。此列由 apg_plan_mgmt.evolve_plan_baselines 函数填充。

compatibility_level

Aurora PostgreSQL 优化程序的功能级别。

created_by 创建计划的已通过身份验证用户 (session_user)。
enabled

计划已启用还是已禁用的指示符。默认情况下启用所有计划。您可以禁用计划以防止由优化程序使用。要修改此值,请使用 apg_plan_mgmt.set_plan_enabled 函数。

environment_variables

优化程序在捕获计划时覆盖的 PostgreSQL Grand Unified Configuration (GUC) 参数和值。

estimated_startup_cost 在优化程序提供表行之前估算的优化程序设置成本。
estimated_total_cost 估算的优化程序提供最终表行的成本。
execution_time_benefit_ms 启用计划带来的执行时间效益,以毫秒为单位。此列由 apg_plan_mgmt.evolve_plan_baselines 函数填充。
execution_time_ms 计划将运行的估计时间,以毫秒为单位。此列由 apg_plan_mgmt.evolve_plan_baselines 函数填充。
has_side_effects 此值指示 SQL 语句是数据操作语言 (DML) 语句还是包含 VOLATILE 函数的 SELECT 语句。
last_used 此值在计划执行或者计划是查询优化程序的最低成本计划时,更新为当前日期。此值存储在共享内存中,定期刷新到磁盘。要获取最新的值,请通过调用函数 apg_plan_mgmt.plan_last_used(sql_hash, plan_hash) 而不是读取 last_used 值,从共享内存中读取日期。有关其他信息,请参阅 apg_plan_mgmt.plan_retention_period 参数。
last_validated 验证计划可以由 apg_plan_mgmt.validate_plans 函数或 apg_plan_mgmt.evolve_plan_baselines 函数重新创建时的最近日期和时间。
last_verified apg_plan_mgmt.evolve_plan_baselines 函数验证计划是指定参数的最佳性能计划的最近日期和时间。
origin

如何通过 参数捕获的计划。包括下列有效值:

M – 通过手动计划捕获来捕获的计划。

A – 通过自动计划捕获来捕获的计划。

param_list

在语句是预编译语句时,传递到语句的参数值。

plan_created 计划的创建日期和时间。
plan_hash 计划标识符。plan_hashsql_hash 的组合唯一标识特定计划。
plan_outline 计划的表示,用于重新创建实际的执行计划,与数据库无关。树中的运算符对应于 EXPLAIN 输出中显示的运算符。
planning_time_ms

运行计划程序的实际时间,以毫秒为单位。此列由 apg_plan_mgmt.evolve_plan_baselines 函数填充。

queryId 语句哈希,由 pg_stat_statements 扩展计算。这不是稳定或独立于数据库的标识符,因为它依赖于对象标识符 (OID)。
sql_hash SQL 语句文本的散列值,删除了文本以标准化。
sql_text SQL 语句的完整文本。
status

计划的状态,确定优化程序如何使用计划。包括下列有效值。大小写没有影响。

  • approved – 可用的计划,优化程序可以选择该计划来运行。优化程序运行托管语句的已批准计划集(基线)中最低成本的计划。要将计划重置为已批准,请使用 apg_plan_mgmt.evolve_plan_baselines 函数。

  • unapproved – 您尚未验证以供使用的已捕获计划。有关更多信息,请参阅 评估计划性能

  • rejected – 优化程序不会使用的计划。有关更多信息,请参阅 拒绝或禁用速度较慢的计划

  • preferred – 您已确定作为首选计划的计划,该计划用于托管语句。

    如果优化程序的最低成本计划不是已批准计划或首选计划,则将已批准计划的子集设置为 preferred 可以减少计划实施开销。当优化程序的最低成本不是 approved 计划时,将在 approved 计划之前选择 preferred 计划。

    要将计划重置为 preferred,请使用 apg_plan_mgmt.set_plan_status 函数。

stmt_name PREPARE 语句内 SQL 语句的名称。对于未命名的预编译语句,此值是为字符串。对于非预编译语句,此值是为 NULL。
total_time_benefit_ms

启用此计划带来的总时间效益,以毫秒为单位。此值同时考虑到规划时间和执行时间。

如果此值为负数,则启用此计划有负面效果。此列由 apg_plan_mgmt.evolve_plan_baselines 函数填充。