查詢分析工具 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

查詢分析工具

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

查詢分析工具是一項查詢監控和故障診斷功能,可透過 Amazon Redshift 主控台檢視。此工具對於分析查詢效能很有幫助。此工具的主要用途在於顯示有關查詢的視覺化圖形執行順序、執行計劃及統計資料,並且讓這些資訊更容易理解和進行故障診斷。查詢分析工具可協助您分析下列類型的查詢元件:

  • 子查詢 - 子查詢是查詢工作的一部分。如果比起當做單一大查詢處理會更具效率,Amazon Redshift 就可能會將查詢分為多個子查詢。在分析工具中,您可以查看每個子查詢的屬性。子查詢是由串流和其他子元件所組成。

    查詢分析工具顯示的子查詢類型通常包括以下各項:

    • 暫存資料表查詢:此子查詢的文字開頭為 CREATE TEMP TABLE 命令。此子查詢會為要處理的其他子查詢建立暫存資料表。

    • 統計資料查詢:查詢分析工具會將下列註解新增至此子查詢的開頭,有助於識別該子查詢:

      -- collect statistics of child query queryID

      此子查詢會收集 Amazon Redshift 查詢引擎用來最佳化效能的資訊。

    注意

    查詢分析工具會顯示使用者提供作為 Amazon Redshift 執行之最終子查詢的查詢。

  • 串流 - 串流是分配在可用運算節點切片上的區段集合。每個子查詢都是由一或多個區段組成。在查詢分析工具中,您可以查看每個串流的屬性,例如其執行時間。透過瀏覽串流清單,您可能很快就能找到效能瓶頸。

  • 區段 - 區段是單一處理程序可執行的一組數個步驟。區段也是運算節點切片可執行的最小編譯單位。配量是 Amazon Redshift 中平行處理的單位。串流中的區段會平行執行。查詢分析工具不會以圖形方式顯示區段,但您可以在步驟的詳細資訊窗格中存取該步驟的區段資訊。

  • 步驟 - 每個區段都是由一系列步驟組成。步驟是查詢工作的一部分。例如,步驟可以包括 hashjoin,或是 scan,這是從資料表讀取記錄的作業。

如需串流、區段和步驟的詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的查詢規劃和執行工作流程

查詢分析工具會顯示 SYS_QUERY_HISTORYSYS_QUERY_DETAILSYS_QUERY_EXPLAINSYS_CHILD_QUERY_TEXT 檢視傳回的資訊。如需這些檢視的詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_HISTORYSYS_QUERY_DETAILSYS_QUERY_EXPLAINSYS_CHILD_QUERY_TEXT

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

使用查詢分析工具的先決條件

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:*" ] } ] }

對角色授予查詢監控許可

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

向角色授予查詢監控許可
  1. 使用下列命令來提供系統監控存取權,其中 role-name 是您想要為其提供存取權之角色的名稱。

    grant role sys:monitor to "IAMR:role-name";
  2. (選用) 使用下列命令來提供系統操作員存取權,其中 role-name 是您想要為其提供存取權之角色的名稱。

    grant role sys:operator to "IAMR:role-name";

對使用者授予查詢監控許可

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

向使用者授予查詢監控許可
  1. 使用下列命令來提供系統監控存取權,其中 user-name 是您想要為其提供存取權之使用者的名稱。

    grant role sys:monitor to "IAMR:user-name";
  2. (選用) 使用下列命令來提供系統操作員存取權,其中 -name 是您想要為其提供存取權之使用者的名稱。

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

使用 IAM 身分的臨時憑證

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

在 Amazon Redshift 主控台中存取查詢分析工具以分析查詢

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

在 Amazon Redshift 主控台中存取 Amazon Redshift Serverless 的查詢分析工具

若要存取 Amazon Redshift Serverless 的查詢分析工具,請執行下列操作:

  • 開啟 Amazon Redshift Serverless 主控台。

  • 在導覽窗格的監控下,選擇查詢和資料庫監控

  • 選擇工作群組。

  • 選擇查詢和資料庫監控

  • 選擇查詢。

  • 查詢詳細資訊頁面中選擇查詢計畫索引標籤。

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

在 Amazon Redshift 主控台中存取 Amazon Redshift 佈建的查詢分析工具

若要存取 Amazon Redshift 佈建的查詢分析工具,請執行下列操作:

  • 開啟 Amazon Redshift 佈建叢集儀表板。

  • 選擇叢集

  • 選擇查詢監控

  • 連線至資料庫

  • 選擇查詢和資料庫監控

  • 選擇查詢。

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

查詢分析工具使用者介面

查詢分析工具使用下列頁面來顯示有關查詢的資訊:

  • 查詢詳細資訊頁面 - 此頁面顯示查詢的統計資料和子查詢。

  • 子查詢頁面 - 此頁面顯示子查詢之執行計畫的統計資料、串流和視覺化呈現。當您從查詢和資料庫監控頁面的子查詢清單中選擇子查詢時,主控台就會顯示此頁面。

查詢詳細資訊頁面

Query details interface showing execution time, data returned, and performance breakdown for query 4960.

查詢詳細資訊頁面包含下列元件:

  • 頂部窗格 - 頁面頂端的窗格會顯示有關查詢的詳細資訊,例如狀態和類型。如需頂部窗格所顯示資訊的來源相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_HISTORY

  • SQL 索引標籤 - 底部面板的此索引標籤會顯示原始使用者查詢的 SQL 文字。

  • 查詢計畫索引標籤 - 底部面板的此索引標籤會顯示 Amazon Redshift 用來為使用者查詢準備資料和統計資料的子查詢清單。根據預設,子查詢清單會顯示有關每個子查詢的資訊和彙總統計資料。如需此頁面所顯示資訊的來源相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_DETAIL

    您可以使用「偏好設定」功能表,在子查詢清單中新增或移除欄。

  • 相關指標 - 底部面板的此索引標籤會顯示查詢的下列 CloudWatch 指標:

    • 使用的 RPU 容量 (適用於無伺服器工作群組):查詢使用的運算容量,以 Redshift 處理單元 (RPU 為單位計算。如需更多詳細資訊,請參閱 Amazon Redshift Serverless 的運算容量

    • 叢集運作狀態CPU 使用率使用的儲存容量 (適用於佈建叢集):狀態和查詢使用的系統資源。

    • 作用中資料庫連線:查詢的 DatabaseConnections 指標。

    如需 CloudWatch 指標的詳細資訊,請參閱Amazon Redshift 中的效能資料

子查詢頁面

Query execution plan showing stages from Distribute to Aggregate with execution times.

子查詢詳細資訊頁面包含下列元件:

  • 子查詢下拉式清單 - 此控制項會顯示每個子查詢的序列名稱和執行時間。您可以在此控制項中選取其他子查詢,以瀏覽至其他子查詢。

  • 側邊面板 - 此面板包含顯示子查詢串流和子查詢文字的索引標籤。

  • 子查詢串流索引標籤 - 頂部面板的此索引標籤會顯示以下內容:

    • 串流 - 此窗格顯示子查詢中的串流清單。此窗格顯示 Amazon Redshift 用來最佳化查詢之串流的相關資訊和彙總資料。如需此窗格中詳細資訊的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_DETAIL

      您可以使用「偏好設定」功能表,在串流窗格中新增或移除欄。您可以使用串流窗格中的齒輪圖示來存取「偏好設定」功能表。

    • 子查詢窗格 - 子查詢中步驟的圖形表示。如需有關子查詢窗格的資訊,請參閱下方的 子查詢窗格

  • 子查詢文字索引標籤 - 頂部面板的此索引標籤會顯示子查詢的 SQL 程式碼。

  • 子查詢詳細資訊窗格 - 右側面板中的此窗格會顯示子查詢的詳細資訊。如需此窗格中詳細資訊的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_DETAIL

  • 串流詳細資訊窗格 - 當您在串流窗格中選擇串流時,串流詳細資訊窗格就會顯示串流的相關資訊。如需此面板中詳細資訊的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_DETAIL

  • 步驟詳細資訊窗格 - 當您在串流窗格或子查詢計畫的圖形中選擇步驟時,步驟詳細資訊窗格就會顯示步驟的相關資訊。如需此窗格中詳細資訊的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 SYS_QUERY_DETAIL

子查詢窗格

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

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

Tree diagram showing Hashjoin step with Scan + Item and Hash steps as child nodes.

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

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

在子查詢窗格中瀏覽

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

您可以使用下列方法選擇節點、平移和放大子查詢計畫:

  • 使用滑鼠 - 您可以選擇節點、按一下並拖曳要平移的工作空間,以及按住 Ctrl (Windows) 或 CMD (Mac) 搭配滑鼠滾輪來縮放。選擇節點會導致工作空間縮放和平移以反白顯示該節點。如果您在工作空間中選擇串流,該串流會在串流清單中反白顯示。如果您在工作空間中選擇步驟,步驟詳細資訊窗格會顯示該步驟的相關資訊。

  • 使用工作空間左上方的縮放和調整控制項 - 這些控制項可讓您放大、縮小、縮放以納入整個工作空間,以及進入全螢幕模式。當您縮放以納入整個查詢計畫時,工作空間會同時將查詢計畫水平和垂直置中。

  • 使用工作空間右下方的迷你地圖 - 您可以使用工作空間左下角的迷你地圖控制項平移或縮放工作空間。

  • 串流窗格中選擇串流 - 如果您在串流窗格中選擇某一個串流,工作空間會平移並縮放以顯示選取的串流,以及在串流詳細資訊窗格中顯示該串流的相關資訊。

  • 串流詳細資訊窗格中選擇步驟 - 如果您在串流詳細資訊窗格中選擇某一個步驟,工作空間會平移並縮放以顯示選取的步驟,以及在步驟詳細資訊窗格中顯示該步驟的相關資訊。

注意

當您在工作空間或不同窗格中選擇步驟時,工作空間會嘗試縮放和平移,以最清楚的方式顯示選取的步驟。

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

Dropdown menu showing pan and zoom options for workspace navigation control.

使用查詢分析工具對查詢進行故障診斷

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

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