監控執行中的查詢

如要找出 AlloyDB for PostgreSQL 系統延遲和 CPU 使用率偏高的原因,您可以監控資料庫中執行時間較長的查詢,並排解相關問題。

您可以在Google Cloud 控制台的「Query insights」(查詢洞察) 頁面中,查看執行中的查詢,並依交易開始時間排序。如果執行的查詢數量過多,頁面可能會因資料收集的記憶體限制,而只顯示部分查詢。

事前準備

如要開始查看執行中的查詢,請啟用進階查詢洞察功能,並為執行個體啟用執行中查詢分析,步驟如下:

  1. 前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集) 頁面

  2. 在叢集和執行個體清單中,按一下「主要」或「讀取集區」執行個體。

  3. 按一下「查詢洞察」。

  4. 點按「Edit Settings」(編輯設定)。

  5. 在「編輯查詢洞察設定」視窗中,依序選取「啟用 AlloyDB 適用的進階查詢洞察功能」>「執行中查詢分析」。

  6. 按一下 [儲存變更]。

  7. 選用:如果系統提示,請在「Changes require restart」(變更需要重新啟動) 視窗中,按一下「Confirm and restart」(確認並重新啟動)。

您可以使用 Gemini Cloud Assist 監控 AlloyDB 資源及排解相關問題。詳情請參閱「使用 AI 輔助功能監控及排解問題」。

查看執行中的查詢

如要查看執行中的查詢,請按照下列步驟操作:

  1. 請要求管理員授予您資料庫洞察監控檢視者 (roles/databaseinsights.monitoringViewer) 角色,或建立具備 databaseinsights.activeQueries.fetch IAM 權限的自訂角色。

  2. 請將這個角色授予每位查看執行中查詢的使用者。

  3. 在 Google Cloud 控制台,開啟「AlloyDB」AlloyDB頁面。

    前往 AlloyDB

  4. 按一下叢集名稱,開啟「總覽」頁面。

  5. 選取「Query insights」(查詢洞察) 分頁標籤。查詢洞察資訊主頁會顯示所選叢集的詳細資料。

  6. 按一下「Active queries view」(有效查詢檢視畫面) 分頁標籤。這個分頁會顯示執行中查詢的摘要,以及執行時間最長的前 50 筆交易。

    您可以透過下列任一方式篩選資訊:

    • 資料庫:篩選特定資料庫或所有資料庫的查詢負載。
    • 使用者:篩選特定資料庫使用者或所有使用者的查詢負載。
    • 節點 ID:僅適用於讀取集區執行個體,可篩選特定讀取集區執行個體節點或所有節點的查詢負載。

    所有正規化執行中查詢的摘要評量表:根據下列參數顯示連線總數,提供所有執行中查詢的總覽:

    • 按照連線狀態分類的有效連線分布。
    • 依據不同等候事件類型,顯示有效連線的分佈情形。
    • 非閒置狀態查詢的交易時間長度分布情形。

    執行時間最長的交易:提供 active 和 idle in transaction 狀態下前 50 項執行中查詢的總覽,並按照執行時間遞減排序。

您可以在查詢洞察資訊主頁上,查看前五十個正規化執行中查詢的清單。

正規化的執行中查詢會移除機密資料,並傳回摘要。如果兩個查詢除了 WHERE 子句值以外完全相同,則摘要也會相同。以下列三個查詢為例:

  • select * from my_table where id = 1;
  • select * from my_table where id = 2;
  • select * from my_table where id = 100;

這些查詢的標準化版本是下列摘要:

select * from my_table where id = ?;

在不同工作階段中執行的查詢,會在資訊主頁上顯示為不同項目。

查看執行時間最長的主要交易

下表說明查詢洞察資訊主頁中「Longest running transactions」(執行時間最長的交易) 資料表的資料欄:

資料欄名稱 說明
程序 ID 程序 ID 是資料庫連線的專屬 ID。
節點 ID 節點 ID 是執行查詢的讀取集區執行個體節點專屬 ID。
查詢 正規化 SQL 查詢文字。
狀態 連線的目前狀態。狀態值包括 active 和 idle in transaction。
工作階段持續時間 (秒) 目前工作階段的持續時間。
交易時長 (秒) 目前交易的持續時間。
查詢時長 (秒) 目前執行中查詢的持續時間。處於 idle in transaction 狀態的查詢並未實際執行,因此查詢時間長度為 0。
等待事件類型 查詢執行期間發生的等待事件類型。
等待事件 查詢執行期間發生的等待事件。
資料庫 執行這個連線的資料庫名稱。
應用程式名稱 執行這項連線的應用程式名稱。
使用者名稱 連線至資料庫的資料庫使用者名稱。
用戶端位址 傳送查詢的用戶端特定 IP 位址。
動作 包含終止交易的連結。

顯示畫面每 60 秒會自動重新整理。

使用「資料庫」和「使用者」欄位篩選,即可重新整理頁面上的資料。

如要分析靜態資料,請停用「自動重新整理」,並視需要使用「執行時間最長的交易」表格的「篩選器」欄位。

終止查詢或交易

您必須具備 roles/databaseinsights.operationsAdmin 角色,才能終止查詢或交易。詳情請參閱「IAM 基本和預先定義的角色參考資料」。

一筆交易可以包含多個查詢。如要找出目前正在執行的查詢,請查看「Longest running transaction」(執行時間最長的交易) 表格中的「Query」(查詢) 欄。

如要終止查詢或交易,請完成下列步驟:

  1. 在「Longest running transaction」(執行時間最長的交易) 表格中選取查詢。
  2. 向右捲動至「Action」欄。
  3. 按一下「終止連線」。
  4. 在「終止連線」視窗中,按一下「確認」。

    啟動終止程序後,頁面會重新整理。如果終止失敗,系統不會顯示任何訊息,查詢也會繼續顯示在「進行中的查詢」清單。如果終止成功,查詢就不會再顯示在清單中。

已封鎖的查詢分析

如果特定執行中查詢遭到封鎖,或執行時間遠超過預期,該查詢可能會封鎖其他依附查詢。

您可以使用已封鎖的查詢分析,找出並終止執行時間過長、鎖定時間過長,或阻礙其他查詢的查詢。

找出並終止遭封鎖的執行中查詢

如要找出並終止可能封鎖其他查詢的特定有效查詢,請完成下列步驟:

  1. 在 Google Cloud 控制台,開啟「AlloyDB」AlloyDB頁面。

    前往 AlloyDB

  2. 按一下叢集名稱,開啟「總覽」頁面。

  3. 選取「查詢洞察」分頁標籤。

  4. 按一下「Active queries」(有效查詢) 分頁標籤。 如果目前沒有執行中的查詢,請前往 AlloyDB Studio,執行要調查的查詢。

  5. 前往「Longest running transactions」(執行時間最長的交易) 專區。每個類別最多可顯示 50 項執行時間最長的有效查詢。顯示的每個項目都有執行中查詢詳細資料,包括:

    • 程序 ID:查詢的程序 ID。按一下 「展開」即可查看項目。您會看到下列其中一個圖示:
      • 沙漏圖示:這個圖示表示程序正在等待其他查詢完成。如果圖示旁有數字,則表示有多少依附查詢正在等待這項程序完成。
      • 封鎖圖示:這個圖示表示程序正在阻礙系統執行其他查詢。
    • 查詢:正在執行的查詢,例如 SELECT ... 或 UPDATE ...。
    • 狀態:有效查詢的狀態,例如 ACTIVE。
    • 工作階段持續時間 (秒):目前工作階段的持續時間。
    • 交易持續時間 (秒):目前運作中交易的持續時間。
    • 查詢時長 (秒):目前執行中查詢的時長。
    • 等待事件類型:查詢執行期間目前的等待事件類型,例如「Timeout」(逾時) 或「Lock」(鎖定)。
    • 等待事件:查詢執行期間目前的等待事件。
    • 資料庫:執行連線的資料庫名稱。
    • 應用程式名稱:執行連線的應用程式名稱。
    • 使用者名稱:連線至資料庫的使用者名稱。
    • 用戶端位址:傳送查詢的用戶端 IP 位址。
    • 動作:可採取的動作,例如「終止連線」。

    按一下要調查的程序 ID 展開。在調查樹狀圖中,您最多可以展開三層基礎程序。

  6. 找出遭到封鎖的特定查詢,然後按一下「Terminate connection」(終止連線)。終止連線後,您可以前往 AlloyDB Studio 再次執行中的查詢。

後續步驟