

# 使用性能详情中的“主要 SQL”选项卡分析查询
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics"></a>

在 Amazon RDS Performance Insights 控制面板中，您可以在 **Top dimensions**（主要维度）表中的 **Top SQL**（主要 SQL）选项卡下找到有关运行中查询和最近查询的信息。您可以使用此信息来优化查询。

**Topics**
+ [“Top SQL”（主要 SQL）选项卡概览](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL)
+ [在 Performance Insights 控制面板中访问更多 SQL 文本](USER_PerfInsights.UsingDashboard.SQLTextSize.md)
+ [在 Performance Insights 控制面板中查看 SQL 统计数据](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.AnalyzingSQLLevel.md)

## “Top SQL”（主要 SQL）选项卡概览
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL"></a>

原定设置情况下，**Top SQL**（主要 SQL）选项卡将显示对数据库负载影响最大的 25 个 SQL 查询。为了帮助优化查询，您可以分析查询文本和 SQL 统计数据等信息。您还可以选择想要显示在 **Top SQL**（主要 SQL）选项卡中的统计数据。

**Topics**
+ [SQL 文本](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.text)
+ [SQL 统计数据](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.statistics)
+ [按等待状态排列的负载 (AAS)](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Load-by-waits)
+ [查看 SQL 信息](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.SQL-information)
+ [选择统计数据首选项](#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Preferences)

### SQL 文本
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.text"></a>

原定设置情况下，**Top SQL**（主要 SQL）表中的每行为每条语句显示 500 字节的文本。

![\[SQL 文本\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/sql-text-oracle.png)


要了解如何查看超过默认 500 字节的 SQL 文本，请参阅[在 Performance Insights 控制面板中访问更多 SQL 文本](USER_PerfInsights.UsingDashboard.SQLTextSize.md)。

*SQL 摘要*是多个结构上相似但可能具有不同文本值的实际查询的组合。摘要用问号替换硬编码值。例如，摘要可能为 `SELECT * FROM emp WHERE lname= ?`。此摘要可能包含以下子查询：

```
SELECT * FROM emp WHERE lname = 'Sanchez'
SELECT * FROM emp WHERE lname = 'Olagappan'
SELECT * FROM emp WHERE lname = 'Wu'
```

要查看摘要中的文字 SQL 语句，请选择查询，然后选择加号 (\$1)。在以下示例中，所选查询为摘要。

![\[选定的 SQL 摘要\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf_insights_4b.png)


**注意**  
SQL 摘要将相似的 SQL 语句进行分组，但不会编辑敏感信息。

Performance Insights 可以将 Oracle SQL 文本显示为 **Unknown**（未知）。文本会在以下情况下具有此状态：
+ 除 `SYS` 以外的 Oracle 数据库用户处于活动状态，但当前未执行 SQL。例如，当并行查询完成时，查询协调器将等待帮助程序进程发送会话统计数据。在等待期间，查询文本将显示 **Unknown**（未知）。
+ 对于标准版 2 上的 RDS for Oracle 实例，Oracle 资源管理器会限制并行线程的数量。执行此工作的后台进程会导致查询文本显示为 **Unknown**（未知）。

### SQL 统计数据
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.statistics"></a>

*SQL 统计数据*是关于 SQL 查询的性能相关指标。例如，性能详情可能会显示每秒执行数或每秒处理的行数。性能详情仅收集最常见查询的统计数据。通常，它们与 Performance Insights 控制面板中显示的按负载列出的主要查询匹配。

**Top SQL**（主要 SQL）表中的每一行显示了 SQL 语句或摘要的相关统计数据，如以下示例所示。

![\[主要 SQL\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf_insights_4.png)


Performance Insights 可以报告 SQL 统计数据的 `0.00` 和 `-`（未知）。这种情况在以下条件下发生：
+ 只存在一个样本。例如，Performance Insights 根据 `pg_stat_statements` 视图的多个样本，计算 RDS PostgreSQL 的更改速率。当工作负载运行时间较短时，Performance Insights 可能只收集一个样本，这意味着它无法计算更改速率。未知值用短划线 (`-`) 表示。
+ 两个样本具有相同的值。由于未发生更改，Performance Insights 无法计算更改速率，因此它将速率报告为 `0.00`。
+ RDS PostgreSQL 语句缺乏有效的标识符。PostgreSQL 仅在解析和分析之后才会为语句创建标识符。因此，语句可以存在于 PostgreSQL 内部内存结构中，而无需标识符。由于 Performance Insights 每秒对内部内存结构进行一次采样，因此低延迟查询可能只出现在单个样本中。如果查询标识符对该样本不可用，则 Performance Insights 无法将此语句与其统计数据进行关联。未知值用短划线 (`-`) 表示。

有关 Amazon RDS 引擎的 SQL 统计数据的说明，请参阅 [Performance Insights 的 SQL 统计数据](sql-statistics.md)。

### 按等待状态排列的负载 (AAS)
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Load-by-waits"></a>

在 **Top SQL**（主要 SQL）中，**按等待状态排列的负载 (AAS)** 列说明了与每个主要负载项目关联的数据库负载的百分比。此列按当前在**数据库负载图表**中选择的分组方式反映该项目的负载。有关平均活动会话数（AAS）的更多信息，请参阅[平均活动会话数](USER_PerfInsights.Overview.ActiveSessions.md#USER_PerfInsights.Overview.ActiveSessions.AAS)。

例如，您可以按等待状态对**数据库负载**图表进行分组。您可以检查主要负载项目表中的 SQL 查询。在这种情况下，系统将对 **DB Load by Waits (按等待状态排列的数据库负载)** 栏进行大小调整、分段和颜色编码，以显示该查询在导致给定等待状态方面所起的作用大小，它还会显示哪些等待状态正在影响选定的查询。

![\[按等待状态排列的数据库负载\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf_insights_6.png)


### 查看 SQL 信息
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.SQL-information"></a>

在 **Top SQL**（主要 SQL）表中，您可以打开一条语句以查看其信息。信息将显示在底部窗格中。

![\[选定文本查询的“主要 SQL”表\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-open.png)


与 SQL 语句关联的以下类型的标识符 (ID)：
+ **支持 SQL ID** – SQL ID 的哈希值。此值仅用于当您处理 AWS Support 时引用 SQL ID。AWSSupport 无法访问您实际的 SQL ID 和 SQL 文本。
+ **支持摘要 ID** – 摘要 ID 的哈希值。此值仅用于当您处理 AWS Support 时引用摘要 ID。AWSSupport 无法访问您实际的摘要 ID 和 SQL 文本。

### 选择统计数据首选项
<a name="USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL.Preferences"></a>

您可以通过选择 **Preferences**（首选项）图标来控制 **Top SQL**（主要 SQL）选项卡中显示的统计数据。

![\[统计数据首选项\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-preferences-icon.png)


当您选择 **Preferences (首选项)** 图标时，**Preferences (首选项)** 窗口将打开。以下屏幕截图是 **Preferences**（首选项）窗口的示例。

![\[“首选项”窗口\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/perf-insights-sql-ids-preferences.png)


要启用您希望在 **Top SQL**（主要 SQL）选项卡中显示的统计数据，请使用鼠标滚动到窗口底部，然后选择 **Continue**（继续）。

有关 Amazon RDS 引擎每秒或每次调用统计数据的更多信息，请参阅[Performance Insights 的 SQL 统计数据](sql-statistics.md)中引擎特定的 SQL 统计数据部分