使用 Performance Insights 控制面板 - Amazon Aurora
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Performance Insights 控制面板

Performance Insights 控制面板包含帮助您分析和排查性能问题的数据库性能信息。在主控制面板页面上,可以查看有关数据库负载的信息。还可以向下钻取特定等待状态、SQL 查询、主机或用户的详细信息。

打开 Performance Insights 控制面板

要查看 Performance Insights 控制面板,请使用以下过程。

在 AWS 管理控制台中查看 Performance Insights 控制面板

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Performance Insights

  3. 选择一个数据库实例。将为该数据库实例显示 Performance Insights 控制面板。

    对于启用 Performance Insights 的数据库实例,您还可以通过选择数据库实例列表中的会话项目来访问控制面板。在当前活动下,会话项目显示在过去五分钟内平均活跃会话中的数据库负载。条形图显示负载量。当条形图为空时,数据库实例处于空闲状态。随着负载的增加,条形图会以蓝色填充。当负载超过数据库实例类上的虚拟 CPU (vCPU) 数量时,条形图变为红色,表示可能出现瓶颈。

    
							筛选指标

    以下屏幕截图显示数据库实例的控制面板。

    
							在创建数据库实例时通过控制台启用 Performance Insights

默认情况下,Performance Insights 控制面板将显示过去 60 分钟的数据。您可以修改它以显示过去 5 分钟、60 分钟、5 小时、24 小时或一周的数据。您还可以显示所有可用数据。

Performance Insights 控制面板自动刷新新的数据。刷新速率取决于所显示的数据量:

  • 5 分钟则每 5 秒刷新一次。

  • 1 小时和 5 小时均每分钟刷新一次。

  • 每 5 分钟刷新 24 小时一次。

  • 每小时刷新一周一次。


					筛选指标

Performance Insights 控制面板组件

控制面板分为三个部分:

  1. 计数器指标图表 – 显示特定性能计数器指标的数据。

  2. 平均活跃会话图表 – 显示数据库负载与由 Max CPU 线表示的数据库实例容量的比较情况。

  3. 最大负载项目表 – 显示导致数据库负载的主要项目。

计数器指标图表

Counter Metrics (计数器指标) 图表显示性能计数器的数据。显示的默认指标为 blks_read.avgxact_commit.avg。通过选择图表右上角的齿轮图标来选择要显示的性能计数器。


						筛选指标

有关更多信息,请参阅 Performance Insights 计数器

“Average Active Sessions”图表

Average Active Sessions 图表显示了数据库负载与由 Max CPU 线表示的数据库实例容量的比较情况。默认情况下,负载显示为按等待状态分组的活动会话。您还可选择改为将负载显示为按 SQL 查询、主机或用户分组的活动会话。


						筛选指标

要在图例中查看任何项目在选定时间段内的详细信息,您可将鼠标悬停在 Average Active Sessions 图表的该项目上。


						筛选指标

“Top Load Items”表

Top Load Items 表显示导致数据库负载的主要项。默认情况下,将显示导致数据库负载的主要 SQL 查询。这些查询以结构上相似但可能具有不同参数的多个实际查询的摘要形式显示。您可以改为选择显示主要等待状态、主机或用户。


						筛选指标

与每个主要负载项目关联的数据库负载的百分比将显示在 DB Load by Waits (按等待状态排列的数据库负载) 列中。此列按当前在 Average Active Sessions (活动会话平均数) 图表中选择的分组方式反映该项目的负载。举例而言,假设 Average Active Sessions 图表按主机分组,并且您正在查看“Top Load Items”表中的 SQL 查询。在这种情况下,DB Load by Waits (按等待状态排列的数据库负载) 栏将反映该查询在相关主机上表示的负载。此处它采用颜色编码,映射到该主机在 Average Active Sessions 图表中的表示形式。

再举一个例子,假设 Average Active Sessions 图表是按等待状态分组,并且您正在查看“Top Load Items”表的 SQL 查询。在这种情况下,系统将对 DB Load by Waits (按等待状态排列的数据库负载) 栏进行大小调整、分段和颜色编码,以显示该查询在导致给定等待状态方面所起的作用大小,以及哪些等待状态正在影响该查询。


						筛选指标

Top Load Items 表中,您可以查看与 SQL 语句关联的以下类型的标识符 (ID):

  • SQL ID – 数据库用来唯一地标识 SQL 语句的 ID。

  • 支持 SQL ID – SQL ID 的哈希值。此值仅用于当您处理 AWS Support 时引用 SQL ID。AWS Support 无法访问您实际的 SQL ID 和 SQL 文本。

  • 摘要 ID – 数据库用来唯一地标识 SQL 摘要的 ID。SQL 摘要可能包含一个或多个 SQL 语句,其中删除了文本且空格已标准化。文本替换为问号 (?)。

    对于 Aurora MySQL 和 Aurora PostgreSQL 数据库实例,您可以使用摘要 ID 查找特定的 SQL 摘要。

  • 支持摘要 ID – 摘要 ID 的哈希值。此值仅用于当您处理 AWS Support 时引用摘要 ID。AWS Support 无法访问您实际的摘要 ID 和 SQL 文本。

Top Load Items 表中,您可以打开顶部语句以查看其 ID。以下屏幕截图显示了一个打开的顶部语句。


						SQL ID

您可以通过选择 Preferences (首选项) 图标控制 Top Load Items 表显示的 ID。


						SQL ID

当您选择 Preferences (首选项) 图标时,Preferences (首选项) 窗口将打开。


						SQL ID

启用您要显示在 Top Load Items 表中的 ID,然后选择保存

使用 Performance Insights 控制面板分析数据库负载

如果 Average Active Sessions 图表显示了一个瓶颈,您可以找出负载的来源。为此,请查看 Average Active Sessions 图表下方的“Top Load Items”表。选择特定项目 (如 SQL 查询或用户) 以深入了解该项目并查看有关该项目的详细信息。

按等待状态和主要 SQL 查询分组的数据库负载是默认 Performance Insights 控制面板视图,此组合通常提供了最多的性能问题见解。按等待状态分组的数据库负载显示了数据库中是否存在任何资源瓶颈或并发瓶颈。在这种情况下,“Top Load Items”表的 SQL 选项卡显示了增大该负载的查询。

诊断性能问题的典型工作流程如下:

  1. 查看 Average Active Sessions 图表并了解是否存在数据库负载越过 Max CPU 线的任何事件。

  2. 如果有,请查看 Average Active Sessions 图表并确定负主要责任的等待状态。

  3. 通过以下方式确定导致负载的摘要查询:查看“Top Load Items”表上的 SQL 选项卡中的哪个查询对于导致这些等待状态所起的作用最大。可通过 DB Load by Wait (按等待状态排列的数据库负载) 列加以识别。

  4. SQL 选项卡中选择这些摘要查询之一以展开它并查看它包含的子查询。

例如,在随后出现的控制面板中,IO:XactSync 等待状态是一个出现频率较高的问题。CPU 等待状态是一个出现频率较低的问题,但它仍对负载有影响。

“Top Load Items”表的 SQL 选项卡中的前 4 个汇总查询与第一个状态紧密关联。因此,这些查询是您希望深入了解并执行子查询检查的查询。这样做是为了确定它们对导致性能问题所起的作用大小。

最后 3 个汇总查询对 CPU 起到了重要作用。这些查询将是用来调查 CPU 负载是否是一个问题的查询。


					筛选指标

分析运行查询的统计数据

在 Amazon RDS Performance Insights 中,您可以在 Top Load Items (顶部加载项) 部分中找到有关运行查询的统计数据。要查看这些统计数据,请查看 Top SQL。Performance Insights 只收集最常见查询的统计数据,并且通常按 Performance Insights 控制面板中显示的负载与热门查询匹配。

Aurora MySQL 的统计数据

Performance Insights 从 events_statements_summary_by_digest 表中收集 SQL 摘要统计数据。此表由数据库管理,并且没有移出策略。如果表已满,则不跟踪新的 SQL 查询。为了解决此问题,Performance Insights 会在表快满时自动将其截断。

仅在参数组未显式设置 performance_schema 参数值时,Performance Insights 才自动截断表。可以检查 performance_schema 参数,如果源的值为 user,则设置一个值。如果您希望 Performance Insights 自动截断表,请重置 performance_schema 参数的值。可以通过在 AWS 管理控制台 中查看参数或运行 AWS CLI describe-db-parameters 命令来查看参数值的源。当表已满时,AWS 管理控制台中将显示以下消息:

Performance Insights is unable to collect SQL Digest statistics on new queries because the table events_statements_summary_by_digest is full. Please truncate events_statements_summary_by_digest table to clear the issue. Check the User Guide for more details.

以下 SQL 统计数据适用于 Aurora MySQL 数据库集群

指标 Unit
db.sql_tokenized.stats.count_star_per_sec 每秒调用数
db.sql_tokenized.stats.sum_timer_wait_per_sec 每秒平均活动执行次数 (AAE)
db.sql_tokenized.stats.sum_select_full_join_per_sec 选择每秒完全联接数
db.sql_tokenized.stats.sum_select_range_check_per_sec 选择每秒范围检查数
db.sql_tokenized.stats.sum_select_scan_per_sec 选择每秒扫描数
db.sql_tokenized.stats.sum_sort_merge_passes_per_sec 对每秒合并传递数进行排序
db.sql_tokenized.stats.sum_sort_scan_per_sec 对每秒对扫描数进行排序
db.sql_tokenized.stats.sum_sort_range_per_sec 对每秒范围数进行排序
db.sql_tokenized.stats.sum_sort_rows_per_sec 对每秒行数进行排序
db.sql_tokenized.stats.sum_rows_affected_per_sec 每秒受影响的行数
db.sql_tokenized.stats.sum_rows_examined_per_sec 每秒检查的行数
db.sql_tokenized.stats.sum_rows_sent_per_sec 每秒发送的行数
db.sql_tokenized.stats.sum_created_tmp_disk_tables_per_sec 每秒创建的临时磁盘表数
db.sql_tokenized.stats.sum_created_tmp_tables_per_sec 每秒创建的临时表数
db.sql_tokenized.stats.sum_lock_time_per_sec 每秒锁定时间(以毫秒为单位)

以下指标提供了 SQL 语句的每次调用统计数据。

指标 Unit
db.sql_tokenized.stats.sum_timer_wait_per_call 每个调用的平均延迟(以毫秒为单位)
db.sql_tokenized.stats.sum_select_full_join_per_call 选择每次调用完全联接数
db.sql_tokenized.stats.sum_select_range_check_per_call 选择每次调用范围检查数
db.sql_tokenized.stats.sum_select_scan_per_call 选择每次调用扫描数
db.sql_tokenized.stats.sum_sort_merge_passes_per_call 对每次调用合并传递数进行排序
db.sql_tokenized.stats.sum_sort_scan_per_call 对每次调用扫描数进行排序
db.sql_tokenized.stats.sum_sort_range_per_call 对每次调用范围数进行排序
db.sql_tokenized.stats.sum_sort_rows_per_call 对每次调用行数进行排序
db.sql_tokenized.stats.sum_rows_affected_per_call 每次调用受影响的行数
db.sql_tokenized.stats.sum_rows_examined_per_call 每次调用检查的行数
db.sql_tokenized.stats.sum_rows_sent_per_call 每次调用发送的行数
db.sql_tokenized.stats.sum_created_tmp_disk_tables_per_call 每次调用创建的临时磁盘表数
db.sql_tokenized.stats.sum_created_tmp_tables_per_call 每次调用创建的临时表数
db.sql_tokenized.stats.sum_lock_time_per_call 每个调用的锁定时间(以毫秒为单位)

分析正在运行的 SQL 语句的 Aurora MySQL 指标

借助 AWS 管理控制台,您可以通过选择 SQL 选项卡并展开查询来查看正在运行的 SQL 查询的指标。


							查看正在运行的查询的指标

通过选择图表右上角的齿轮图标来选择要显示的统计数据。

以下屏幕截图显示 Aurora MySQL 数据库实例的首选项。


							用于运行 Aurora MySQL 数据库实例查询的指标的首选项。

Aurora PostgreSQL 的统计数据

要查看 SQL 摘要统计数据,必须加载 pg_stat_statements 库。对于与 PostgreSQL 10 兼容的 Aurora PostgreSQL 数据库集群,默认情况下加载该库。但是,对于与 PostgreSQL 9.6 兼容的 Aurora PostgreSQL 数据库集群,您必须手动启用该库。要手动启用该库,请在与数据库实例关联的数据库参数组中的 shared_preload_libraries 中添加 pg_stat_statements。然后重启数据库实例。有关更多信息,请参阅使用数据库参数组和数据库集群参数组

注意

Performance Insights 只能收集 pg_stat_activity 中非截断查询的统计数据。默认情况下,Aurora PostgreSQL 数据库截断长度超过 1,024 字节的查询。您可以通过更改与数据库实例关联的数据库参数组中的 track_activity_query_size 参数来增加查询大小。更改此参数后,需要重新启动数据库实例。收集查询时,Performance Insights 还有 5,120 字节的限制,这也会影响统计数据的收集。由于存在内存限制,需要将字节数限制为 5,120。

以下 SQL 摘要统计数据可用于 Aurora PostgreSQL 数据库实例。

指标 Unit
db.sql_tokenized.stats.calls_per_sec 每秒调用数
db.sql_tokenized.stats.rows_per_sec 每秒行数
db.sql_tokenized.stats.total_time_per_sec 每秒平均活动执行次数 (AAE)
db.sql_tokenized.stats.shared_blks_hit_per_sec 每秒批量命中次数
db.sql_tokenized.stats.shared_blks_read_per_sec 每秒批量读取次数
db.sql_tokenized.stats.shared_blks_dirtied_per_sec 每秒批量损坏次数
db.sql_tokenized.stats.shared_blks_written_per_sec 每秒批量写入次数
db.sql_tokenized.stats.local_blks_hit_per_sec 每秒局部批量命中次数
db.sql_tokenized.stats.local_blks_read_per_sec 每秒局部批量读取次数
db.sql_tokenized.stats.local_blks_dirtied_per_sec 每秒局部批量损坏次数
db.sql_tokenized.stats.local_blks_written_per_sec 每秒局部批量写入次数
db.sql_tokenized.stats.temp_blks_written_per_sec 每秒临时写入次数
db.sql_tokenized.stats.temp_blks_read_per_sec 每秒临时读取次数
db.sql_tokenized.stats.blk_read_time_per_sec 每秒平均并发读取次数
db.sql_tokenized.stats.blk_write_time_per_sec 每秒平均并发写入次数

以下指标提供了 SQL 语句的每次调用统计数据。

指标 Unit
db.sql_tokenized.stats.rows_per_call 每个调用的行数
db.sql_tokenized.stats.avg_latency_per_call 每个调用的平均延迟(以毫秒为单位)
db.sql_tokenized.stats.shared_blks_hit_per_call 每个调用的批量命中次数
db.sql_tokenized.stats.shared_blks_read_per_call 每个调用的批量读取次数
db.sql_tokenized.stats.shared_blks_written_per_call 每个调用的批量写入次数
db.sql_tokenized.stats.shared_blks_dirtied_per_call 每个调用的批量损坏次数
db.sql_tokenized.stats.local_blks_hit_per_call 每个调用的局部批量命中次数
db.sql_tokenized.stats.local_blks_read_per_call 每个调用的局部批量读取次数
db.sql_tokenized.stats.local_blks_dirtied_per_call 每个调用的局部批量损坏次数
db.sql_tokenized.stats.local_blks_written_per_call 每个调用的局部批量写入次数
db.sql_tokenized.stats.temp_blks_written_per_call 每个调用的临时批量写入次数
db.sql_tokenized.stats.temp_blks_read_per_call 每个调用的临时批量读取次数
db.sql_tokenized.stats.blk_read_time_per_call 每个调用的读取时间(以毫秒为单位)
db.sql_tokenized.stats.blk_write_time_per_call 每个调用的写入时间(以毫秒为单位)

有关这些指标的更多信息,请参阅 PostgreSQL 文档中的 pg_stat_statements

分析正在运行的 SQL 语句的 Aurora PostgreSQL 指标

借助 AWS 管理控制台,您可以通过选择 SQL 选项卡来查看正在运行的 SQL 查询的指标。


							查看正在运行的查询的指标

通过选择图表右上角的齿轮图标来选择要显示的统计数据。

以下屏幕截图显示 Aurora PostgreSQL 的首选项。


							用于运行 Aurora PostgreSQL 数据库实例查询的指标的首选项

在 Performance Insights 控制面板中查看更多 SQL 文本

默认情况下,Top Load Items (首要负载项目) 表中的每行为每个 SQL 语句显示 500 字节的 SQL 文本。当 SQL 语句大于 500 字节时,可通过在 Performance Insights 控制面板中打开该语句来查看 SQL 语句的更多内容。Performance Insights 控制面板可以为 SQL 语句最多显示 4096 字节。您可以复制显示的 SQL 语句。要查看 4096 字节以上的文本,请选择 Download full SQL (下载完整 SQL) 以查看不超过数据库引擎限制的 SQL 文本。

SQL 文本的限制取决于数据库引擎。那么,下列限制适用:

  • Aurora MySQL 5.7 – 4096 字节

  • Aurora MySQL 5.6 – 1024 字节

  • Aurora PostgreSQL – 通过 track_activity_query_size 数据库实例参数进行设置

对于 Aurora PostgreSQL 数据库实例,可以通过设置 track_activity_query_size 数据库实例参数来控制 SQL 文本大小的限制,最高为 102400 字节。可以使用 AWS 管理控制台来下载 SQL 文本,最多为您使用此参数设置的限制。有关更多信息,请参阅 为 Aurora PostgreSQL 数据库实例设置 SQL 文本限制

重要

目前,您只能使用 AWS 管理控制台查看和下载更多 SQL 文本。AWS Performance Insights CLI 和 API 最多可以返回 500 字节的文本。

在 Performance Insights 控制面板中查看更多 SQL 文本

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Performance Insights

  3. 选择一个数据库实例。将为该数据库实例显示 Performance Insights 控制面板。

    具有大于 500 字节的文本的 SQL 语句如下图所示。

    
							具有大文本的 SQL 语句
  4. 打开 SQL 语句来查看更多 SQL 文本。

    
							查看更多 SQL 文本

    Performance Insights 控制面板可以为每个 SQL 语句最多显示 4096 字节。

  5. (可选)选择 Copy snippet (复制代码段) 来复制所显示的 SQL 语句,或选择 Download full SQL (下载完整 SQL) 来下载 SQL 语句以查看不超过数据库引擎限制的 SQL 文本。

    注意

    要复制或下载 SQL 语句,请禁用弹出窗口阻止程序。

Aurora PostgreSQL 数据库实例设置 SQL 文本限制

对于 Aurora PostgreSQL 数据库实例,您可以控制可显示在 Performance Insights 控制面板上的 SQL 文本的限制。

为此,请修改 track_activity_query_size 数据库实例参数。 在 Aurora PostgreSQL 9.6 版上,track_activity_query_size 参数的默认设置为 1024 字节。在 Aurora PostgreSQL 10 版或更高版本上,track_activity_query_size 参数的默认设置为 4096 字节。

您可以增加字节数来增加 Performance Insights 控制面板中可见的 SQL 文本大小。参数的限制为 102400 字节。有关 track_activity_query_size 数据库实例参数的更多信息,请参阅 PostgreSQL 文档中的运行时统计数据

要修改参数,请更改与 Aurora PostgreSQL 数据库实例关联的参数组中的参数设置。

如果 Aurora PostgreSQL 数据库实例使用默认的参数组,请完成以下步骤:

  1. 为相应数据库引擎和数据库引擎版本创建新的数据库实例参数组。

  2. 在新参数组中设置参数。

  3. 将新参数组与数据库实例相关联。

有关设置数据库实例参数的信息,请参阅 修改数据库参数组中的参数