使用查詢洞察改善查詢效能

本頁面說明如何使用「查詢洞察」資訊主頁,偵測及分析查詢效能問題。

簡介

查詢洞察可協助您偵測、診斷及預防 Cloud SQL 資料庫的查詢效能問題。這項功能支援直覺化的監控,並提供診斷資訊,協助您在偵測到效能問題後,進一步找出根本原因。

查詢洞察會引導您完成下列步驟,協助您提升 Cloud SQL 查詢效能:

Cloud SQL Enterprise Plus 版本的查詢洞察

如果您使用的是 Cloud SQL Enterprise Plus 版本,則可存取查詢洞察中的其他功能,執行進階查詢效能診斷。除了查詢洞察資訊主頁的標準功能外,Cloud SQL Enterprise Plus 版的查詢洞察還可讓您執行下列操作:

  • 擷取較長的查詢文字,最多 20 KB。
  • 擷取所有已執行查詢的查詢計畫。
  • 每分鐘最多可取樣 200 個查詢計畫。
  • 將指標保留時間延長至 30 天。
  • 從索引建議工具取得索引建議。
  • 終止執行中查詢的工作階段或長時間執行的交易。
  • 使用 AI 輔助疑難排解功能 (預先發布版)。

下表比較 Cloud SQL Enterprise 版和 Cloud SQL Enterprise Plus 版的查詢洞察功能需求和功能。

比較區域 Cloud SQL Enterprise 版的查詢洞察 Cloud SQL Enterprise Plus 版本的查詢洞察
支援的資料庫版本

下列執行個體的所有版本:

  • SQL Server Web
  • SQL Server Standard
  • SQL Server Enterprise

SQL Server Express 版本執行個體不支援查詢洞察

SQL Server Enterprise 2019 或 2022 版
支援的機型 支援所有機型 不支援使用共用核心機型的執行個體
支援地區 Cloud SQL 區域位置 Cloud SQL Enterprise Plus 版區域位置
指標保留期限 7 天 30 天
查詢長度上限 4500 個位元組 20 KB
查詢計畫範例數量上限 20 200
索引建議工具建議 無法使用 適用
終止執行中查詢的工作階段或長時間執行的交易 無法使用 適用
AI 輔助疑難排解 (預先發布版) 無法使用 適用
查詢基數限制 回報所有查詢的匯總統計資料。 回報所有查詢的匯總統計資料。

啟用 Cloud SQL Enterprise Plus 版本的查詢洞察功能

如要為 Cloud SQL Enterprise Plus 版本啟用查詢洞察,請在 Cloud SQL Enterprise Plus 版本執行個體啟用查詢洞察時,選取「啟用 Enterprise Plus 功能」。

定價

Cloud SQL Enterprise 版或 Cloud SQL Enterprise Plus 版執行個體的查詢洞察功能不需額外付費。

儲存空間需求

查詢洞察會將指標資料儲存在執行個體上,因此您必須保持啟用自動增加儲存空間設定。須支付相關儲存費用。

限制

Cloud SQL Enterprise Plus 版本執行個體的查詢洞察功能有下列限制:

  • 如果執行個體承受沉重的系統負載,當您在「查詢洞察」資訊主頁中查詢指標資料時,查詢載入速度可能會變慢或逾時。
  • 如果重新建立唯讀副本,重新建立的唯讀副本不會保留先前的指標記錄。
  • 從舊備份還原 Cloud SQL Enterprise Plus 版執行個體的查詢洞察時,可能會遺失備份建立時間到執行個體還原時間之間收集的指標。舉例來說,如果您在 4 月 30 日使用 4 月 25 日建立的備份還原執行個體,可能會遺失 4 月 25 日至 4 月 30 日之間的所有指標。

事前準備

使用查詢洞察前,請先完成下列步驟。

  1. 新增必要角色和權限。
  2. 啟用 Cloud Trace API。
  3. 如果您使用的是 Cloud SQL Enterprise 版或 Cloud SQL Enterprise Plus 版的查詢洞察,請務必為執行個體啟用「Enable automatic storage increases」(啟用自動增加儲存空間)。

必要角色和權限

如要取得在「查詢洞察」資訊主頁中存取歷來查詢執行資料所需的權限,請要求管理員在託管 Cloud SQL 執行個體的專案中,授予您下列 IAM 角色:

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

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

啟用 Cloud Trace API

如要查看查詢計畫和端對端檢視畫面, Google Cloud 專案必須啟用 Cloud Trace API。這項設定可讓Google Cloud 專案接收來自已驗證來源的追蹤記錄資料,不需額外付費。這項資料有助於偵測及診斷執行個體的效能問題。

如要確認 Cloud Trace API 是否已啟用,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「APIs and Services」(API 和服務):

    前往「APIs and Services」(API 和服務) 頁面

  2. 點選「啟用 API 和服務」。
  3. 在搜尋列中輸入 Cloud Trace API。
  4. 如果畫面上顯示「API enabled」(API 已啟用),代表這個 API 已啟用,您不需執行任何操作。否則,請按一下「Enable」(啟用)。

啟用自動增加儲存空間

如果您使用 Cloud SQL Enterprise Plus 版本的查詢洞察,請務必啟用自動增加儲存空間的執行個體設定。根據預設,Cloud SQL 執行個體會啟用這個選項。

如果您先前停用這項執行個體設定,並想為 Cloud SQL Enterprise Plus 版本啟用查詢洞察,請先重新啟用自動增加儲存空間功能。Cloud SQL Enterprise Plus 版本無法停用自動增加儲存空間功能,也無法啟用查詢洞察。

啟用查詢洞察

啟用查詢洞察後,所有其他作業都會暫時停用。這些作業包括健康狀態檢查、記錄、監控和其他執行個體作業。

控制台

為執行個體啟用查詢洞察

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

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

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在「設定」圖塊中,按一下「編輯設定」。
  4. 在「自訂執行個體」部分,展開「查詢洞察」。
  5. 勾選「啟用查詢洞察」核取方塊。
  6. 選用:選取執行個體的其他功能。 部分功能僅適用於 Cloud SQL Enterprise Plus 版本。
  7. 功能 說明 Cloud SQL Enterprise 版本 Cloud SQL Enterprise Plus 版
    啟用 Enterprise Plus 功能 勾選這個核取方塊,即可啟用 Cloud SQL Enterprise Plus 版本的查詢洞察功能。 Cloud SQL Enterprise Plus 版本的查詢洞察功能可讓您終止執行中查詢的工作階段和長時間執行的交易、啟用索引建議工具建議,協助您加快查詢處理速度,並將指標資料保留期限延長至 30 天。為 Cloud SQL Enterprise Plus 版本啟用查詢洞察功能時,系統會自動啟用索引建議工具。如要停用索引建議工具的建議,請取消勾選這個核取方塊。 您必須勾選這個核取方塊,才能啟用索引建議工具建議和 AI 輔助疑難排解功能 (預先發布版)。 無法使用 可用

    預設:停用
    AI 輔助疑難排解 勾選這個核取方塊,即可啟用效能異常偵測、根本原因和情況分析功能,並取得修正查詢和資料庫問題的建議。這項功能目前為預先發布版,只能透過 Google Cloud 控制台啟用及存取。詳情請參閱「使用 AI 輔助功能觀察及排解問題」。 無法使用 可用

    預設:停用
    自訂查詢長度 勾選這個核取方塊,即可自訂查詢字串的長度限制。查詢長度越長,越適合用於分析查詢,但所需記憶體也越多。任何超過指定限制的查詢字串,在顯示時都會遭到截斷。

    變更查詢長度限制後,必須重新啟動執行個體。
    您可以設定限制,範圍為 256 到 4500 個位元組。

    預設值:1024。
    您可以指定 256 到 20480 個位元組的限制。

    預設值:10240 個位元組 (10 KB)。
    設定取樣率上限 勾選這個核取方塊,即可設定取樣率上限。取樣率是指執行個體上所有資料庫每分鐘擷取的已執行查詢計畫樣本數。提高取樣率或許可以產生更多資料點,但也有可能增加效能負擔。 請將這個值變更為介於 0 至 20 之間的數字。

    預設值:5。
    您可以將上限提高至 200,以提供更多資料點。

    預設值:5。
  8. 按一下「儲存」。

為多個執行個體啟用查詢洞察

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

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

  2. 按一下任一列的「更多動作」 選單。
  3. 選取「啟用查詢洞察」。
  4. 在對話方塊中,勾選「Enable Query insights for multiple instances」(為多個執行個體啟用查詢洞察) 核取方塊。
  5. 按一下「啟用」。
  6. 在後續對話方塊中,選取要啟用查詢洞察的執行個體。
  7. 按一下「啟用查詢洞察」。

gcloud

如要使用 gcloud 啟用 Cloud SQL 執行個體的查詢洞察功能,請執行 gcloud sql instances patch 並加上 --insights-config-query-insights-enabled 旗標,如下所示。請將 INSTANCE_ID 替換為執行個體 ID。

如果為 Cloud SQL Enterprise Plus 版本執行個體啟用查詢洞察,系統會自動啟用索引建議工具建議。

    gcloud sql instances patch INSTANCE_ID \
    --insights-config-query-insights-enabled
  

此外,請使用下列一或多個選用旗標:

  • --insights-config-query-string-length

    設定預設查詢長度限制。查詢長度越長,越適合用於分析查詢,但所需記憶體也會越多。 變更查詢長度限制後,必須重新啟動執行個體。 如果是 Cloud SQL Enterprise 版,您可以指定 256 到 4500 之間的值 (以位元組為單位)。預設查詢長度為 1024 個位元組。如果是 Cloud SQL Enterprise Plus 版本,您可以指定 256 到 20480 之間的限制 (以位元組為單位)。預設值為 10240 個位元組 (10 KB)。

  • --insights-config-query-plans-per-minute

    根據預設,執行個體的所有資料庫每分鐘最多可擷取 5 個已執行的查詢計畫樣本。提高取樣率或許可以產生更多資料點,但也有可能增加效能負擔。如要停用取樣功能,請將這個值設為 0。 如果是 Cloud SQL Enterprise 版,您可以將值變更為 0 到 20。如果是 Cloud SQL Enterprise Plus 版本,則可將上限提高至 200,以提供更多資料點。

更改下列內容:

  • INSIGHTS_CONFIG_QUERY_STRING_LENGTH:要儲存的查詢字串長度,以位元組為單位。
  • API_TIER_STRING:要用於執行個體的自訂執行個體設定。
  • REGION:執行個體的區域。
gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS_PER_MINUTE \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

如要使用 REST API 啟用 Cloud SQL 執行個體的查詢洞察功能,請使用 insightsConfig 設定呼叫 instances.patch 方法。

如果為 Cloud SQL Enterprise Plus 版本執行個體啟用查詢洞察,系統會自動啟用索引建議工具建議。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:專案 ID
  • INSTANCE_ID:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "settings" : {
     "insightsConfig" : {
       "queryInsightsEnabled" : true,
       "queryStringLength" : 1024,
       "queryPlansPerMinute" : 20,
   }
  }
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2025-03-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

如要使用 Terraform 為 Cloud SQL 執行個體啟用查詢洞察,請將 query_insights_enabled 旗標設為 true。

如果為 Cloud SQL Enterprise Plus 版本執行個體啟用查詢洞察,系統會自動啟用索引建議工具。

此外,您可以使用下列一或多個選用旗標:

  • query_string_length:如果是 Cloud SQL Enterprise 版,您可以指定 256 到 4500 之間的值 (以位元組為單位)。預設查詢長度為 1024 個位元組。 如果是 Cloud SQL Enterprise Plus 版本,您可以指定 256 到 20480 位元組的限制。預設值為 10240 個位元組 (10 KB)。
  • query_plans_per_minute:如果是 Cloud SQL Enterprise 版,您可以將值設為 0 至 20。預設為 5。 如果是 Cloud SQL Enterprise Plus 版本,您可以將上限提高至 200,以提供更多資料點。

範例如下:

  resource "google_sql_database_instance" "INSTANCE_NAME" {
  name                = "INSTANCE_NAME"
  database_version    = "SQLSERVER_VERSION"
  region              = "REGION"
  root_password       = "PASSWORD"
  deletion_protection = false # set to true to prevent destruction of the resource
  settings {
    tier = "DB_TIER"
    insights_config {
      query_insights_enabled  = true
      query_string_length     = 2048 # Optional
      query_plans_per_minute  = 10 # Optional
    }
  }
  }
  

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell。
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    這項指令在每個專案中只需執行一次,且可在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為「根模組」)。

  1. 在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須有 .tf 副檔名,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在進行教學課程,可以複製每個章節或步驟中的程式碼範例。

    將程式碼範例複製到新建立的 main.tf。

    您也可以從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 請查看並修改範例參數,以便套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 查看設定,確認 Terraform 要建立或更新的資源符合預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。

查詢完成後,指標應會在幾分鐘內顯示在查詢洞察中。

查看「查詢洞察」資訊主頁

「查詢洞察」資訊主頁會根據您選取的因素顯示查詢負載。查詢負載是指在所選日期範圍內,執行個體中所有查詢的總工作量。資訊主頁提供一系列篩選器,可協助您查看查詢負載。

如要開啟「查詢洞察」資訊主頁,請按照下列步驟操作:

  1. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  2. 在 Cloud SQL 導覽選單中,按一下「Query insights」(查詢洞察),或在「Instance overview」(執行個體總覽) 頁面中,按一下「Go to Query insights for more in-depth info on queries and performance」(前往「查詢洞察」頁面,深入瞭解查詢和效能)。
  3. 「查詢洞察」資訊主頁隨即開啟。視您使用的是 Cloud SQL Enterprise 版或 Cloud SQL Enterprise Plus 版的查詢洞察,查詢洞察資訊主頁會顯示下列執行個體資訊:

顯示「查詢洞察」資訊主頁,其中包含資料庫的下拉式選單。下拉式選單右側有一個篩選器,可用來設定日期範圍。

  • 資料庫:篩選特定資料庫或所有資料庫的查詢負載。
  • 時間範圍:依時間範圍篩選查詢負載,例如 1 小時、6 小時、1 天、7 天、30 天或自訂範圍。
  • 資料庫負載圖表:根據篩選後的資料顯示查詢負載圖表。
  • 「Queries」(查詢) 和「Databases」(資料庫):依所選查詢或所選資料庫篩選查詢負載。請參閱「篩選資料庫負載」。

查看所有查詢的資料庫負載

資料庫查詢負載是指所選資料庫中,已執行查詢作業在一段時間內的工作量 (以 CPU 使用秒數為單位)。每項執行中的查詢都會使用或等待 CPU 資源、IO 資源或鎖定資源。資料庫查詢負載是指在指定時間範圍內,所有查詢完成所需時間與實際經過時間的比率。

頂層查詢洞察資訊主頁會顯示「Database load by execution time」(依執行時間顯示的資料庫負載) 圖表。您可以使用資訊主頁的下拉式選單,篩選所有資料庫或特定資料庫的圖表。

顯示所選資料庫中所有已執行的查詢。

圖表中的彩色線條代表各資料庫的負載 (根據執行時間)。查看圖表並使用篩選選項,探索下列問題:

  • 查詢負載是否過高?圖表是否會隨著時間推移而出現高峰或上升?如果負載不高,表示問題不在查詢。
  • 負載過高的情況持續多久了?是只有現在偏高,還是已經偏高一段時間?使用範圍選取器選取不同的時間範圍,找出問題持續的時間。放大即可查看查詢負載高峰的時間範圍。縮小時間軸,最多可查看一週的記錄。
  • 哪個資料庫正在承受負載?從「資料庫」下拉式選單中選取不同資料庫,找出負載最高的資料庫。

篩選資料庫負載

您可以依查詢篩選資料庫負載。 您可以自訂資料庫負載圖表,使用下列任一維度細分顯示的資料:
  • 所有查詢

  • 資料庫

如要自訂資料庫負載圖表,請從「Database Load by execution time」(資料庫負載 (根據執行時間)) 下拉式選單中選取維度。

查看資料庫負載的主要來源

如要查看資料庫負載的主要來源,請使用「Top dimensions by database load」(各資料庫負載的最大維度) 表格。「Top dimensions by database load」(依資料庫負載列出的主要維度) 表格會顯示您在「Database Load by execution time」(依執行時間列出的資料庫負載) 圖表下拉式選單中,所選時間範圍和維度的主要影響因素。您可以修改時間範圍或維度,查看不同維度或時間範圍的傑出貢獻者。

在「Top dimensions by data load」(依資料負載列出的主要維度) 表格中,您可以選取下列分頁標籤。

Tab 鍵 說明
查詢 表格會依總執行時間顯示最熱門的正規化查詢。 每項查詢的資料欄會列出下列資料:
  • 平均執行時間 (毫秒):查詢的平均執行時間。
    • 「Avg execution time (ms)」(平均執行時間 (毫秒)) 欄中的項目清單可能不完整。舉例來說,如果特定使用者執行的查詢導致資料庫負載過高,且該行為不代表使用者的平均行為,則可能不會納入該使用者查詢的項目。
  • 總執行時間 (毫秒):特定查詢的總執行時間。
  • 平均傳回的資料列數:查詢擷取的平均資料列數。
  • 呼叫次數:應用程式呼叫查詢的次數。
資料庫 這份表格列出在所選時間範圍內,所有已執行查詢中,造成負載的主要資料庫。
  • Avg time spent in database (ms):查詢在特定資料庫中花費的平均時間。
  • Total time spent in database (ms):查詢在特定資料庫中執行的總時間。

依查詢篩選

「Top dimensions by database load」(各資料庫負載的最大維度) 表格會概略列出造成最多查詢負載的查詢。表格會顯示在「查詢洞察」資訊主頁上,所選時間範圍和選項的所有正規化查詢。並依所選日期範圍內的總執行時間排序查詢。

如要排序表格,請選取資料欄標題。

表格會顯示下列屬性:

  • 查詢:標準化查詢字串。根據預設,查詢洞察只會顯示查詢字串中的 1024 個字元。
  • 資料庫:執行查詢的資料庫。
  • 建議:建議採取的做法,例如「建立索引」,以提高查詢效能。
  • 平均執行時間 (毫秒):查詢的平均執行時間。
  • 總執行時間 (毫秒):執行查詢的總時間。
  • 呼叫次數:應用程式呼叫查詢的次數。
  • 平均傳回列數:查詢平均傳回的資料列數。

查詢洞察只會儲存及顯示正規化查詢。

檢查取樣查詢計畫中的作業

查詢計畫會擷取查詢樣本,並將其拆解為個別作業。並說明及分析查詢中的每項作業。

「Query plan samples」(查詢計畫樣本) 圖表會顯示在特定時間執行的所有查詢計畫,以及各項計畫的執行時間。您可以變更每分鐘擷取查詢計畫樣本的頻率。請參閱「啟用查詢洞察」。

顯示查詢計畫和端對端追蹤記錄的圖表。

根據預設,右側面板會顯示耗時最長的範例查詢計畫詳細資料,如「Query plan samples」(查詢計畫樣本) 圖表所示。如要查看其他範例查詢計畫的詳細資料,請按一下圖表上的相關圓圈。展開的詳細資料會顯示查詢計畫中所有作業的模型。

每項作業都會顯示傳回的資料列,以及作業費用 (如有)。使用全螢幕檢視畫面或「End-to-end」(端對端) 分頁,查看每個節點 (作業) 的預估執行統計資料,以及與根節點相關聯的執行階段執行統計資料。

使用視覺化樹狀結構顯示查詢計畫。

請試著透過下列問題縮小問題範圍:

  1. 資源消耗量為何?
  2. 與其他查詢有何關聯?
  3. 用量是否會隨時間變化?

查詢詳細資料功能

查詢詳細資料可提供特定查詢的進一步詳細資料,包括平均執行時間、呼叫次數,以及傳回的平均資料列數。此外,這項工具也會提供建議 (例如索引),協助您提高查詢效能。

查詢詳細資料也會提供下列指標:

  • 查詢計畫範例:這些範例會針對查詢樣本細分當中的不同作業,讓您瞭解及分析查詢。

    顯示查詢計畫和端對端追蹤記錄的圖表。

  • 一段時間內的查詢執行次數:顯示在指定時間範圍內完成查詢的次數。這張圖表可協助您進一步瞭解查詢通常在何時執行,並預估查詢對執行個體效能的影響。

    顯示在指定時間範圍內執行查詢的次數。

  • 一段時間內平均傳回的資料列數:顯示一段時間內查詢傳回的平均資料列數。這項資料可協助您將查詢速度比平常慢,與這些查詢傳回的資料量增加建立關聯。

    顯示一段時間內查詢傳回的平均資料列數。

  • I/O 統計資料:顯示查詢的輸入和輸出統計資料,包括下列篩選器:
    • 平均邏輯讀取次數
    • 平均實體讀取次數
    • 平均邏輯寫入次數

    您可以使用 I/O 指標,將查詢速度比平常慢的情況,與更密集的 I/O 使用量或 I/O 模式變化建立關聯。

    舉例來說,如果邏輯讀取次數增加,可能代表查詢開始讀取比平常更多的資料。如果實體讀取次數增加,可能代表 Cloud SQL 開始從磁碟讀取更多資料,而非從緩衝區快取讀取。舉例來說,記憶體可能不足,無法快取所有資料,或是執行個體開始讀取過多資料。如果邏輯寫入次數增加,可能代表查詢開始將更多資料寫入資料磁碟。

    這個例子說明這項指標如何協助評估查詢對執行個體 I/O 的影響。

    顯示查詢的輸入和輸出統計資料。

  • 記憶體統計資料:顯示查詢的記憶體用量統計資料,包括下列篩選器:
    • 平均理想記憶體用量
    • 平均預留記憶體
    • 平均記憶體用量

    這項指標可協助您偵測與查詢相關的記憶體用量變化,包括下列範例:

    • 這項指標可用於偵測 Cloud SQL 是否誤判執行查詢所需的記憶體量,並可能預留了超過查詢用量的記憶體。
    • 這項指標可用於偵測 Cloud SQL 無法分配足夠記憶體,而保留較小記憶體授權的情況。發生這種情況時,Cloud SQL 會使用 tempdb 資料庫,速度比使用記憶體慢。
    • 請將這項指標與查詢執行次數搭配使用,評估查詢對執行個體記憶體消耗量的影響。
    • 如果發現記憶體用量或壓力偏高,請使用這項指標。

    顯示查詢的記憶體用量統計資料。

  • CPU 作業時間和執行時間統計資料:這個檢視畫面提供查詢的 CPU 作業時間和執行時間統計資料。您可以使用 CPU 作業時間指標,調查執行個體 CPU 使用率偏高的問題,包括下列範例:
    • 您可以結合 CPU 作業時間和執行次數指標,評估查詢對執行個體總 CPU 消耗量的影響。
    • 您可以結合 CPU 作業時間、執行時間和平行處理指標,評估查詢等待資源的時間百分比。
    • 您可以使用執行時間指標,偵測查詢執行時間是否比平常長。

    這個檢視畫面提供查詢的 CPU 作業時間和執行時間統計資料。

  • 其他查詢統計資料:顯示與查詢相關的其他統計資料,包括下列篩選器:
    • 通用語言執行階段 (CLR) 統計資料
    • 資料欄儲存庫統計資料
    • 記憶體溢寫
    • 平行處理作業統計資料

    顯示與查詢有關的其他統計資料,包括通用語言執行階段 (CLR)、資料欄儲存庫、記憶體溢寫和平行處理作業的統計資料。

遭封鎖的執行中查詢

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

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

詳情請參閱「封鎖的執行中查詢」。

停用查詢洞察

控制台

如要使用 Google Cloud 控制台停用 Cloud SQL 執行個體的查詢洞察功能,請按照下列步驟操作:

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

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

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在「設定」圖塊中,按一下「編輯設定」。
  4. 在「設定選項」部分,展開「查詢洞察」。
  5. 取消勾選「啟用查詢洞察」核取方塊。
  6. 按一下「儲存」。

gcloud

如要使用 gcloud 停用 Cloud SQL 執行個體的查詢洞察功能,請執行 gcloud sql instances patch 並加上 --no-insights-config-query-insights-enabled 旗標,如下所示。請先將 INSTANCE_ID 替換為執行個體 ID。

gcloud sql instances patch INSTANCE_ID \
  --no-insights-config-query-insights-enabled

REST

如要使用 REST API 停用 Cloud SQL 執行個體的查詢洞察功能,請呼叫 instances.patch 方法,並將 queryInsightsEnabled 設為 false,如下所示。

使用任何要求資料之前,請先修改下列項目的值:

  • project-id:專案 ID。
  • instance-id:執行個體 ID。

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Terraform

如要使用 Terraform 停用 Cloud SQL 執行個體的查詢洞察功能,請將 query_insights_enabled 旗標設為 false。

範例如下:

  resource "google_sql_database_instance" "INSTANCE_NAME" {
  name                = "INSTANCE_NAME"
  database_version    = "SQLSERVER_VERSION"
  region              = "REGION"
  root_password       = "PASSWORD"
  deletion_protection = false # set to true to prevent destruction of the resource
  settings {
    tier = "DB_TIER"
    insights_config {
      query_insights_enabled  = false
    }
  }
  }
  

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell。
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    這項指令在每個專案中只需執行一次,且可在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為「根模組」)。

  1. 在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須有 .tf 副檔名,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在進行教學課程,可以複製每個章節或步驟中的程式碼範例。

    將程式碼範例複製到新建立的 main.tf。

    您也可以從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 請查看並修改範例參數,以便套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 查看設定,確認 Terraform 要建立或更新的資源符合預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。

停用 Cloud SQL Enterprise Plus 版本的查詢洞察功能

如要停用 Cloud SQL Enterprise Plus 版本的查詢洞察功能,請按照下列步驟操作:

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

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

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 按一下 [編輯]。
  4. 在「自訂執行個體」部分,展開「查詢洞察」。
  5. 取消勾選「啟用 Enterprise Plus 功能」核取方塊。
  6. 按一下「儲存」。

後續步驟