查詢計畫視覺化工具總覽

本頁面說明查詢計畫視覺化工具的主要元件。

Google Cloud 控制台中的查詢計畫視覺化工具,可協助您瞭解 Spanner 選擇用來評估查詢的執行計畫結構。

視覺化工具會以圖表形式顯示計畫,方便您分析 Spanner 如何執行查詢,並找出潛在的效能瓶頸。您可以使用查詢計畫視覺化工具執行下列任一操作:

  • 偵錯緩慢查詢:找出查詢計畫中耗費最多時間或資源的部分。
  • 驗證最佳化:比較變更前後 (例如新增索引或重寫 join) 的查詢計畫,確認是否有所改善。
  • 瞭解查詢行為:瞭解 Spanner 如何處理複雜的 SQL 陳述式,包括彙整、匯總和分散式作業。

使用查詢計畫視覺化工具的好處

查詢計畫可能很複雜。視覺化工具提供下列功能,可簡化計畫分析作業:

  • 圖形表示法:顯示資料從資料表和索引,透過各種運算子流向最終結果的流程。
  • 效能深入分析:找出高成本運算子,並以視覺提示標示高延遲和 CPU 消耗。
  • 資料列計數圖表:以線條粗細指標顯示每個步驟的資料量。
  • 詳細統計資料:提供每個運算子的特定執行階段統計資料。

存取查詢計畫視覺化工具

您可以透過下列任一方法,在 Google Cloud 控制台中存取查詢計畫視覺化工具:

  • Spanner Studio:在編寫及測試查詢時,產生即時、隨選的查詢計畫。
  • 查詢洞察:查看從正式環境工作負載擷取的歷來取樣查詢計畫。

在 Spanner Studio 中查看隨選方案

如要在 Spanner Studio 中查看查詢的隨選查詢計畫,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下執行個體名稱,該執行個體應包含您要查詢的資料庫。

  3. 在「Databases」(資料庫) 清單中,按一下資料庫名稱。

  4. 在導覽選單中,點選「Spanner Studio」。

  5. 在編輯器窗格中輸入 SQL 查詢。

  6. 按一下「執行」。

  7. 按一下「Explanation」(說明) 分頁標籤。

在查詢洞察中查看取樣計畫

如要在查詢洞察中查看歷來取樣查詢計畫,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Spanner「Instances」(執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下要調查的資料庫所在執行個體名稱。

  3. 在導覽選單中,點選「查詢洞察」。

  4. 選取要分析的資料庫和日期範圍。

  5. 在「TopN queries」(TopN 查詢) 表格中,按一下要檢查的查詢或要求標記。

  6. 在「Query plans samples」(查詢計畫樣本) 圖表中,按一下代表查詢執行的樣本點。

  7. 在「Query plan visualizer」(查詢計畫視覺化工具) 區段中,查看視覺化執行計畫。

視覺化檢視工具會以有向無環圖 (DAG) 的形式顯示查詢計畫。

加上註解的查詢計畫視覺化工具

查詢計畫圖表可能很大,具體取決於您執行的查詢。如要隱藏或顯示詳細資料,請按一下「展開/精簡」檢視畫面選取器。如要放大或縮小,請使用縮放控制項。

視覺化工具介面提供下列資訊面板:

如要下載視覺化查詢計畫,請按一下「Download JSON」(下載 JSON)。如要日後查看查詢計畫,可以將下載的 JSON 設定檔重新匯入 Spanner Studio。如需排解效能問題,請將 JSON 檔案提供給 Spanner 支援團隊。

查詢計畫無環圖

Spanner 用來執行查詢的邏輯會顯示為 DAG。圖表會由下而上顯示資料流程。資料表和索引會顯示在底部,最終查詢輸出內容則會顯示在頂端。

圖表中的每個節點都以資訊卡表示。每張卡片代表一個疊代器,會從輸入內容中消耗資料列,並為父項產生資料列。

連接資訊卡的線條代表疊代器之間的資料列流程。線條粗細代表傳遞的資料列相對數量。線條越粗,表示資料列越多。

圖表中的每張資訊卡都包含下列資訊:

  • 疊代器名稱:疊代器的名稱。
  • 執行階段統計資料:傳回的資料列數量、延遲時間和 CPU 使用率。

按一下資訊卡,即可查看延遲時間、CPU 使用率、傳回的資料列、執行次數和機器群組數量的詳細資訊。

如要進一步瞭解運算子,請參閱「查詢執行運算子」。

Spanner 查詢通常會從多個資料庫分割區擷取資料。機器群組代表一組連續的查詢執行運算子,會針對一組分割共同執行。在單一機器群組中,運算子會由下而上依序執行,而不同的機器群組則會平行執行。當資料在機器群組邊界之間移動時,會透過遠端程序呼叫 (RPC) 傳輸。

如要進一步瞭解分割,請參閱「資料庫分割」。

視覺化工具可協助您區分邏輯和實體分布:

  • 邏輯邊界:標示為「Distributed」的資訊卡,代表查詢規劃工具分割查詢邏輯的位置。
  • 實體分布:圖表中的機器群組顏色代表根據執行階段統計資料得出的實際實體執行情況。

實體邊界通常與邏輯分散式運算子一致,但可能會因分割區在伺服器上的位置而有所不同。

查詢摘要

「Query summary」(查詢摘要) 窗格會提供下列高階執行指標,並醒目顯示查詢中的潛在瓶頸:

  • 總耗用時間:從開始到結束執行查詢所需的總時間。
  • CPU 作業時間:處理查詢的所有執行緒和伺服器,累計耗用的 CPU 作業時間。
  • 計畫建立時間:查詢編譯器和最佳化工具產生執行計畫所需的時間。
  • 伺服器佇列延遲:查詢在伺服器佇列中等待處理的時間。
  • 傳回的資料列數:最終查詢結果傳回的資料列總數。
  • 掃描的資料列:從所有掃描的資料表和索引中,讀取的資料列總數。
  • 遠端呼叫:分割或機器群組之間的 RPC 總數。
  • 查詢最佳化工具版本:用於編譯計畫的 Spanner 查詢最佳化工具版本。
  • 統計資料套件:用於成本最佳化的最佳化工具統計資料套件。

主要運算子

「Prominent operators」(重要運算子) 區段會醒目顯示查詢計畫中,最耗用資源的疊代器:

  • 延遲時間最長:執行時間最長的運算子。
  • CPU 作業時間最長:耗用最多 CPU 作業時間的運算子。
  • 資料列數量最多:處理或傳回最多資料列的運算子。

查詢執行時間軸

「Query execution timeline」(查詢執行時間軸) 分頁會顯示以時間為基礎的圖表,呈現每個機器群組執行查詢部分所需的時間。機器群組可能不會在整個查詢期間執行,也可能執行多次。不過,時間軸只會顯示初始執行的開始時間,以及最終執行的結束時間。

成效視覺提示

視覺化工具會使用下列顏色和圖示,協助您找出問題:

  • 紅色長條:表示該運算子耗用的延遲時間或 CPU 作業時間百分比 (相對於總查詢)。
  • 警告三角形:表示已執行完整資料表掃描。這類掃描通常表示有機會最佳化查詢,例如新增次要索引。
  • 機器群組顏色:區分機器群組,並醒目顯示群組之間的轉換。這些轉換作業需要在不同機器上遠端執行,因此會產生序列化和網路負擔。查詢執行時間軸也會顯示這些機器群組顏色。

後續步驟