監控執行中的查詢

本頁說明如何監控及排解資料庫中現正執行的查詢。監控這些查詢有助於找出系統延遲和 CPU 使用率偏高的原因。

查詢洞察資訊主頁中,您可以查看有效交易的摘要,以及相關聯的查詢和統計資料清單。交易會依交易開始時間顯示。如果執行大量查詢,結果可能只會顯示部分查詢。

事前準備

如要監控執行中的查詢,可以使用 Cloud SQL Enterprise 版或 Cloud SQL Enterprise Plus 版。

如要在執行中的查詢中終止工作階段或長時間執行的交易,Cloud SQL 執行個體必須使用 Cloud SQL Enterprise Plus 版本。

如要進一步瞭解 Cloud SQL 版本,請參閱「Cloud SQL 版本簡介」。

必要角色和權限

如要取得查看有效查詢所需的權限,請要求管理員在代管 Cloud SQL 執行個體的專案中,授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備查看有效查詢所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要查看有效查詢,必須具備下列權限:

  • 查看資料庫活動摘要和長時間執行的交易:
    • databaseinsights.activeQueries.fetch
    • databaseinsights.activitySummary.fetch

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

啟用執行中的查詢

啟用查詢洞察後,系統會自動啟用執行中的查詢。如要終止執行中查詢中的工作階段或長時間執行的交易,您必須使用 Cloud SQL Enterprise Plus 版本的查詢洞察

停用執行中的查詢

如要停用「執行中的查詢」分頁,必須一併停用查詢洞察。如要停用執行中查詢和查詢洞察,請參閱「停用查詢洞察」。

查看執行中的查詢

如要查看有效查詢,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。

  3. 執行下列任一操作,顯示「查詢洞察」資訊主頁:

    • 選取「查詢洞察」分頁標籤。
    • 按一下「前往查詢洞察,深入瞭解查詢和效能」。 系統會開啟「查詢洞察」資訊主頁。頂端會顯示執行個體的詳細資料。
  4. 按一下「有效查詢」分頁標籤。

    您可以在這裡修改「執行時間最長的交易」表格中顯示的查詢資訊:

    • 資料庫:篩選特定資料庫或所有資料庫的查詢負載。
    • 使用者:篩選特定使用者帳戶的查詢負載。

查看正規化的執行中查詢

您可以在「查詢洞察」資訊主頁上,查看正規化有效查詢的熱門長時間執行交易清單。正規化有效查詢會移除敏感資料,並傳回摘要。在下列範例中,不同值使用的摘要相同:

  • 一般查詢

    • select * from test_table where id=1;
    • select * from test_table_where id=2;
  • 摘要或正規化查詢

    • select * from test_table where id=?;

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

查看執行時間最長的交易

「查詢洞察」資訊主頁的「執行時間最長的交易」表格包含下列資料欄:

資料欄名稱 說明
工作階段 ID 工作階段的專屬 ID。
查詢 SQL 查詢文字。
工作階段狀態 工作階段的狀態。
查詢時間長度 查詢已執行多久。
封鎖要求的工作階段 ID 封鎖工作階段的工作階段 ID。
等待事件類型 如果要求因查詢執行作業而遭到封鎖,則為等待事件類型。
等待資源 如果要求因查詢執行作業遭到封鎖,則為要求目前等待的資源。
交易等待時間 如果工作階段遭到封鎖,目前等待的持續時間。
邏輯讀取次數 要求執行的邏輯讀取次數。
讀取 要求執行的讀取次數。
寫入 要求執行的寫入次數。
資料庫 執行工作階段的資料庫。
使用者 連線至資料庫的使用者名稱。
用戶端位址 傳送查詢的用戶端特定 IP 位址。
CPU 作業時間 (毫秒) 要求使用的 CPU 時間 (以毫秒為單位)。
應用程式名稱 發起工作階段的應用程式名稱。
交易資料列已修改 這項查詢傳回用戶端的資料列數。
完成百分比 如果查詢會回報進度,則為完成的工作百分比。
已授予的查詢記憶體 分配給執行要求的頁面數量。
動作 內含終止工作階段的連結。

畫面每 60 秒會自動重新整理一次。

您可以使用「內容顯示選項...」垂直選單,篩選要顯示的資料欄。

終止工作階段

如要終止工作階段或長時間執行的交易,您必須使用 Cloud SQL Enterprise Plus 版本,並啟用 Cloud SQL Enterprise Plus 版本的查詢洞察

長時間執行的作業可能需要較長時間才能終止。

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

  1. 在「執行時間最長的交易」表格中,選取查詢。
  2. 在「動作」欄中,按一下「終止工作階段」
  3. 在「Terminate session」視窗中,按一下「Confirm」

已封鎖的執行中查詢

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

Cloud SQL 可讓您終止特定長時間執行或遭到封鎖的現有查詢。

啟用已封鎖的執行中查詢分析

根據預設, Google Cloud 控制台不會顯示哪些有效查詢遭到封鎖。

如要分析遭封鎖的執行中查詢,必須符合下列條件:

如要啟用已封鎖的執行中查詢分析,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 按一下 [編輯]
  4. 展開「查詢洞察」部分。
  5. 同時選取「啟用查詢洞察」和「啟用 Enterprise Plus 功能」。 兩項設定都必須開啟。
  6. 選取「已封鎖的查詢分析」
  7. 按一下 [儲存]

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

下列步驟說明如何找出並終止可能阻礙其他查詢的特定有效查詢。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中,按一下「查詢洞察」
  4. 按一下「有效查詢」分頁標籤。

    如果目前沒有執行中的查詢,請前往 Cloud SQL Studio,然後執行要調查的查詢。

  5. 前往「執行時間最長的交易」專區。您可以在每個類別下方,查看最多 50 項執行時間最長的有效查詢。

    顯示的每個項目都會包含有效查詢詳細資料,包括:

    • 工作階段 ID:查詢的工作階段 ID。按一下 展開,即可查看項目。你可能會看到下列其中一個圖示:
      • 沙漏圖示: 這個圖示表示查詢正在等待其他查詢完成。如果圖示旁有數字,表示有多少個相依查詢正在等待這個查詢完成。
      • 封鎖符號圖示: 這個圖示表示查詢無法完成,且可能正在封鎖其他查詢。
    • 查詢:SQL 查詢文字。
    • 工作階段狀態:工作階段的狀態。
    • 查詢時間長度 (秒):查詢已執行的時間長度。
    • CPU time(ms):要求使用的 CPU 時間 (以毫秒為單位)。
    • 等待事件類型:如果要求因查詢執行作業而遭到封鎖,則為等待事件類型。
    • 等待資源:要求目前等待的資源 (如果要求因查詢執行作業而遭到封鎖)。
    • 交易等待時間 (秒):如果工作階段遭到封鎖,目前等待時間的長度。
    • 動作:可採取的動作,例如「終止工作階段」

    按一下要調查的會期 ID,展開相關資訊。您可以在調查樹狀結構中,展開最多三層的基礎程序。

  6. 找出遭到封鎖的特定查詢,然後按一下「終止工作階段」。工作階段終止後,您可以前往 Cloud SQL Studio 再次執行進行中的查詢。

查看封鎖休眠工作階段的詳細資料

「Active queries」(執行中的查詢) 分頁會顯示目前正在處理要求的工作階段。這個檢視畫面會排除處於 SLEEPING 狀態的工作階段。

如要查看休眠工作階段執行的最後一個指令,請使用下列指令碼:

SELECT c.session_id, st.text,s.login_name, s.open_transaction_count, s.host_name, s.program_name
FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS S ON c.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) AS st
WHERE s.session_id=BLOCKING_SESSION_ID

BLOCKING_SESSION_ID 替換為導致封鎖的會期 ID。

如要進一步瞭解如何排解及解決封鎖問題,請參閱下列資源:

後續步驟