

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 查詢分析工具
<a name="using-query-plan-profiler"></a>

本文件說明查詢分析工具，這是用於分析查詢的元件和效能的圖形化工具。

查詢分析工具是一項查詢監控和故障診斷功能，可透過 Amazon Redshift 主控台檢視。此工具對於分析查詢效能很有幫助。此工具的主要用途在於顯示有關查詢的視覺化圖形執行順序、執行計劃及統計資料，並且讓這些資訊更容易理解和進行故障診斷。查詢分析工具可協助您分析下列類型的查詢元件：
+ **子查詢** - 子查詢是查詢工作的一部分。如果比起當做單一大查詢處理會更具效率，Amazon Redshift 就可能會將查詢分為多個子查詢。在分析工具中，您可以查看每個子查詢的屬性。子查詢是由串流和其他子元件所組成。

  查詢分析工具顯示的子查詢類型通常包括以下各項：
  + **暫存資料表查詢**：此子查詢的文字開頭為 `CREATE TEMP TABLE` 命令。此子查詢會為要處理的其他子查詢建立暫存資料表。
  + **統計資料查詢**：查詢分析工具會將下列註解新增至此子查詢的開頭，有助於識別該子查詢：

    ```
    -- collect statistics of child query {{queryID}}
    ```

    此子查詢會收集 Amazon Redshift 查詢引擎用來最佳化效能的資訊。
**注意**  
查詢分析工具會顯示使用者提供作為 Amazon Redshift 執行之最終子查詢的查詢。
+ **串流** - 串流是分配在可用運算節點切片上的區段集合。每個子查詢都是由一或多個區段組成。在查詢分析工具中，您可以查看每個串流的屬性，例如其執行時間。透過瀏覽串流清單，您可能很快就能找到效能瓶頸。
+ **區段** - 區段是單一處理程序可執行的一組數個步驟。區段也是運算節點切片可執行的最小編譯單位。配量是 Amazon Redshift 中平行處理的單位。串流中的區段會平行執行。查詢分析工具不會以圖形方式顯示區段，但您可以在步驟的詳細資訊窗格中存取該步驟的區段資訊。
+ **步驟** - 每個區段都是由一系列步驟組成。步驟是查詢工作的一部分。例如，步驟可以包括 *hashjoin*，或是 *scan*，這是從資料表讀取記錄的作業。

如需串流、區段和步驟的詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的[查詢規劃和執行工作流程](https://docs.aws.amazon.com/redshift/latest/dg/c-query-planning.html)。

查詢分析工具會顯示 `SYS_QUERY_HISTORY`、`SYS_QUERY_DETAIL`、`SYS_QUERY_EXPLAIN` 和 `SYS_CHILD_QUERY_TEXT` 檢視傳回的資訊。如需這些檢視的詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_HISTORY](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_HISTORY)、[SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)、[SYS\_QUERY\_EXPLAIN](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_EXPLAIN.html) 和 [SYS\_CHILD\_QUERY\_TEXT](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CHILD_QUERY_TEXT.html)。

查詢分析工具只會顯示近期在資料庫上執行之查詢的查詢資訊。若查詢是使用預先填入的快取資料完成，而不是對資料庫執行，則在之前沒有可用資訊的情況下，查詢將不會有查詢設定檔。這是因為 Amazon Redshift 不會為其產生查詢計畫。

## 使用查詢分析工具的先決條件
<a name="using-query-plan-profiler-prereqs"></a>

SYS 監控檢視的設計目的是易於使用和降低複雜性，提供完整的指標陣列以進行有效的監控和疑難排解。SYS 監控檢視也會保證過去七天的查詢歷史記錄 (無論叢集的大小或活動為何)。使用者只能查看自己執行的查詢，而超級使用者可以查看所有使用者的查詢。

您的 IAM 使用者帳戶或角色需有許可，才能存取主控台的**查詢和資料庫監控**區段。本節說明如何將許可新增至使用者帳戶或角色。

使用下列政策將最低許可新增至您的 IAM 使用者帳戶或角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:DescribeClusters",
                "redshift-serverless:ListNamespaces",
                "redshift-serverless:ListWorkgroups",
                "redshift-data:ExecuteStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult"
            ],
            "Resource": [
                "arn:aws:redshift-serverless:{{us-east-1}}:{{111122223333}}:*",
                "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:*"
            ]
        }
    ]
}
```

------

**Topics**
+ [對角色授予查詢監控許可](#using-query-plan-profiler-prereqs-role)
+ [對使用者授予查詢監控許可](#using-query-plan-profiler-prereqs-user)
+ [使用 IAM 身分的臨時憑證](#using-query-plan-profiler-prereqs-temp-iam)

### 對角色授予查詢監控許可
<a name="using-query-plan-profiler-prereqs-role"></a>

若使用者擁有的角色具有 `sys:monitor` 許可，則可以檢視所有查詢。若使用者擁有的角色具有 `sys:operator` 許可，則可以取消查詢、分析查詢歷史記錄，以及執行真空操作。

**向角色授予查詢監控許可**

1. 使用下列命令來提供系統監控存取權，其中 {{role-name}} 是您想要為其提供存取權之角色的名稱。

   ```
   grant role sys:monitor to "IAMR:{{role-name}}";
   ```

1. (選用) 使用下列命令來提供系統操作員存取權，其中 {{role-name}} 是您想要為其提供存取權之角色的名稱。

   ```
   grant role sys:operator to "IAMR:{{role-name}}";
   ```

### 對使用者授予查詢監控許可
<a name="using-query-plan-profiler-prereqs-user"></a>

具有 `sys:monitor` 許可的使用者可以檢視所有查詢。具有 `sys:operator` 許可的使用者可以取消查詢、分析查詢歷史記錄，以及執行清空操作。

**向使用者授予查詢監控許可**

1. 使用下列命令來提供系統監控存取權，其中 {{user-name}} 是您想要為其提供存取權之使用者的名稱。

   ```
   grant role sys:monitor to "IAMR:{{user-name}}";
   ```

1. (選用) 使用下列命令來提供系統操作員存取權，其中 {{-name}} 是您想要為其提供存取權之使用者的名稱。

   ```
   grant role sys:operator to "IAMR:{{user-name}}";
   ```

### 使用 IAM 身分的臨時憑證
<a name="using-query-plan-profiler-prereqs-temp-iam"></a>

只有在連線至叢集時才能使用此選項。使用此方法時，查詢分析工具會將使用者名稱對應到您的 IAM 身分，並產生臨時密碼讓您以 IAM 身分連線到資料庫。使用此方法來連線的使用者必須已被允許 `redshift:GetClusterCredentialsWithIAM` 的 IAM 許可。若要防止使用者使用此方法，請修改其 IAM 使用者或角色以拒絕此許可。

## 在 Amazon Redshift 主控台中存取查詢分析工具以分析查詢
<a name="using-query-plan-profiler-accessing"></a>

您可以存取 Amazon Redshift Serverless 或 Amazon Redshift 佈建的查詢分析工具。如需詳細資訊，請參閱下列的章節：

**Topics**
+ [在 Amazon Redshift 主控台中存取 Amazon Redshift Serverless 的查詢分析工具](#using-query-plan-profiler-accessing-serverless)
+ [在 Amazon Redshift 主控台中存取 Amazon Redshift 佈建的查詢分析工具](#using-query-plan-profiler-accessing-provisioned)

### 在 Amazon Redshift 主控台中存取 Amazon Redshift Serverless 的查詢分析工具
<a name="using-query-plan-profiler-accessing-serverless"></a>

若要存取 Amazon Redshift Serverless 的查詢分析工具，請執行下列操作：
+ 開啟 Amazon Redshift Serverless 主控台。
+ 在導覽窗格的**監控**下，選擇**查詢和資料庫監控**。
+ 選擇工作群組。
+ 選擇**查詢和資料庫監控**。
+ 選擇查詢。
+ 在**查詢詳細資訊**頁面中選擇**查詢計畫**索引標籤。

如果有可用的查詢計畫，您會看到子查詢清單。選擇查詢即可在查詢分析工具中檢視該查詢。

### 在 Amazon Redshift 主控台中存取 Amazon Redshift 佈建的查詢分析工具
<a name="using-query-plan-profiler-accessing-provisioned"></a>

若要存取 Amazon Redshift 佈建的查詢分析工具，請執行下列操作：
+ 開啟 Amazon Redshift 佈建叢集儀表板。
+ 選擇叢集
+ 選擇**查詢監控**。
+ 連線至資料庫
+ 選擇**查詢和資料庫監控**。
+ 選擇查詢。

如果有可用的查詢計畫，您會看到子查詢清單。選擇查詢即可在查詢分析工具中檢視該查詢。

## 查詢分析工具使用者介面
<a name="using-query-plan-profiler-ui"></a>

查詢分析工具使用下列頁面來顯示有關查詢的資訊：
+ ** [查詢詳細資訊頁面](#using-query-plan-profiler-ui-query-details) ** - 此頁面顯示查詢的統計資料和子查詢。
+ ** [子查詢頁面](#using-query-plan-profiler-ui-child-query) ** - 此頁面顯示子查詢之執行計畫的統計資料、串流和視覺化呈現。當您從**查詢和資料庫監控**頁面的**子查詢清**單中選擇子查詢時，主控台就會顯示此頁面。

### 查詢詳細資訊頁面
<a name="using-query-plan-profiler-ui-query-details"></a>

![](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/metrics_qp_query_details.png)


查詢詳細資訊頁面包含下列元件：
+ **頂部窗格** - 頁面頂端的窗格會顯示有關查詢的詳細資訊，例如狀態和類型。如需頂部窗格所顯示資訊的來源相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_HISTORY](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_HISTORY.html)。
+ **SQL 索引標籤** - 底部面板的此索引標籤會顯示原始使用者查詢的 SQL 文字。
+ **查詢計畫索引標籤** - 底部面板的此索引標籤會顯示 Amazon Redshift 用來為使用者查詢準備資料和統計資料的子查詢清單。根據預設，**子查詢**清單會顯示有關每個子查詢的資訊和彙總統計資料。如需此頁面所顯示資訊的來源相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)。

  您可以使用「偏好設定」功能表，在**子查詢**清單中新增或移除欄。
+ **相關指標** - 底部面板的此索引標籤會顯示查詢的下列 CloudWatch 指標：
  + **使用的 RPU 容量** (適用於無伺服器工作群組)：查詢使用的運算容量，以 Redshift 處理單元 (RPU 為單位計算。如需詳細資訊，請參閱[Amazon Redshift Serverless 的運算容量](serverless-capacity.md)。
  + **叢集運作狀態**、**CPU 使用率**、**使用的儲存容量** (適用於佈建叢集)：狀態和查詢使用的系統資源。
  + **作用中資料庫連線**：查詢的 `DatabaseConnections` 指標。

  如需 CloudWatch 指標的詳細資訊，請參閱[Amazon Redshift 中的效能資料](metrics-listing.md)。

### 子查詢頁面
<a name="using-query-plan-profiler-ui-child-query"></a>

![](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/metrics_qp_child_query_plan.png)


子查詢詳細資訊頁面包含下列元件：
+ **子查詢下拉式清單** - 此控制項會顯示每個子查詢的序列名稱和執行時間。您可以在此控制項中選取其他子查詢，以瀏覽至其他子查詢。
+ **側邊面板** - 此面板包含顯示子查詢串流和子查詢文字的索引標籤。
+ **子查詢串流索引標籤** - 頂部面板的此索引標籤會顯示以下內容：
  + **串流** - 此窗格顯示子查詢中的串流清單。此窗格顯示 Amazon Redshift 用來最佳化查詢之串流的相關資訊和彙總資料。如需此窗格中詳細資訊的相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)。

    您可以使用「偏好設定」功能表，在**串流**窗格中新增或移除欄。您可以使用**串流**窗格中的齒輪圖示來存取「偏好設定」功能表。
  + **子查詢窗格** - 子查詢中步驟的圖形表示。如需有關**子查詢**窗格的資訊，請參閱下方的 [子查詢窗格](#using-query-plan-profiler-child-query-pane)。
+ **子查詢文字索引標籤** - 頂部面板的此索引標籤會顯示子查詢的 SQL 程式碼。
+ **子查詢詳細資訊窗格** - 右側面板中的此窗格會顯示子查詢的詳細資訊。如需此窗格中詳細資訊的相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)。
+ **串流詳細資訊窗格** - 當您在**串流**窗格中選擇串流時，**串流詳細資訊**窗格就會顯示串流的相關資訊。如需此面板中詳細資訊的相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)。
+ **步驟詳細資訊窗格** - 當您在**串流**窗格或**子查詢計畫**的圖形中選擇步驟時，**步驟詳細資訊**窗格就會顯示步驟的相關資訊。如需此窗格中詳細資訊的相關資訊，請參閱《Amazon Redshift 資料庫開發人員指南》**中的 [SYS\_QUERY\_DETAIL](https://docs.aws.amazon.com/redshift/latest/dg/SYS_QUERY_DETAIL.html)。

## 子查詢窗格
<a name="using-query-plan-profiler-child-query-pane"></a>

查詢分析工具會在**子查詢**窗格中，以所選取子查詢中步驟的圖形表示形式來顯示子查詢。

**子查詢**窗格會顯示步驟的執行順序和步驟之間的關係。例如，如果某一個步驟聯結來自另外兩個步驟的輸出，則**子查詢**窗格會將該步驟顯示為樹狀節點，且包含兩個對其饋送的節點：

![](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/metrics_qp_hashjoin.png)


根據預設，**子查詢**窗格不會顯示包含步驟的串流。若要顯示 Amazon Redshift 用來邏輯分割子查詢中步驟的串流，請選擇**檢視串流**。當您選擇**檢視串流**時，**子查詢**窗格會顯示查詢的串流所包含的步驟。

**子查詢**窗格不會顯示區段資訊。若要查看步驟的區段，請選擇步驟。然後**步驟詳細資訊**窗格就會顯示步驟的區段。

### 在子查詢窗格中瀏覽
<a name="using-query-plan-profiler-child-query-pane-navigation"></a>

在**子查詢**窗格中，您可以選擇步驟以查看其詳細資訊。您也可以平移和縮放工作空間，以更清楚地視覺化查詢計畫中的步驟。

您可以使用下列方法選擇節點、平移和放大**子查詢**計畫：
+ **使用滑鼠** - 您可以選擇節點、按一下並拖曳要平移的工作空間，以及按住 **Ctrl** (Windows) 或 **CMD** (Mac) 搭配滑鼠滾輪來縮放。選擇節點會導致工作空間縮放和平移以反白顯示該節點。如果您在工作空間中選擇串流，該串流會在**串流**清單中反白顯示。如果您在工作空間中選擇步驟，**步驟詳細資訊**窗格會顯示該步驟的相關資訊。
+ **使用工作空間左上方的縮放和調整控制項** - 這些控制項可讓您放大、縮小、縮放以納入整個工作空間，以及進入全螢幕模式。當您縮放以納入整個查詢計畫時，工作空間會同時將查詢計畫水平和垂直置中。
+ **使用工作空間右下方的迷你地圖** - 您可以使用工作空間左下角的迷你地圖控制項平移或縮放工作空間。
+ **在**串流**窗格中選擇串流** - 如果您在**串流**窗格中選擇某一個串流，工作空間會平移並縮放以顯示選取的串流，以及在**串流詳細資訊**窗格中顯示該串流的相關資訊。
+ **在**串流詳細資訊**窗格中選擇步驟** - 如果您在**串流詳細資訊**窗格中選擇某一個步驟，工作空間會平移並縮放以顯示選取的步驟，以及在**步驟詳細資訊**窗格中顯示該步驟的相關資訊。

**注意**  
當您在工作空間或不同窗格中選擇步驟時，工作空間會嘗試縮放和平移，以最清楚的方式顯示選取的步驟。  
當您從工作空間或其他窗格選擇串流或步驟時，如果您已在工作空間的右上角控制項中選取**平移和縮放**，則工作空間只會縮放並平移至該串流或步驟。您可以在下拉式清單中選擇適當的設定，以將此行為限於平移和縮放、僅平移，或不移動。  

![](http://docs.aws.amazon.com/zh_tw/redshift/latest/mgmt/images/metrics_qp_pan_zoom.png)


## 使用查詢分析工具對查詢進行故障診斷
<a name="using-query-plan-profiler-troubleshooting"></a>

如果您要對查詢進行故障診斷，您可以選擇子查詢，以判斷哪個串流使用最高的**總查詢時間百分比**。這是快速判斷查詢的哪個部分應進一步分析的方法。

在您得知哪個子查詢花最久的時間後，請檢視其步驟，以查看哪些聯結或掃描可能會導致效能變慢。