在資料庫中尋找熱點

本文說明如何使用熱點洞察資訊主頁,偵測 Spanner 資料庫中的熱點。

資源使用率不均洞察總覽

熱點會導致 Spanner 資料庫發生延遲。資源使用率不均的深入分析資訊主頁可協助您偵測受資源使用率不均影響的分割。請按照下列步驟判斷熱點是否導致延遲,如果是,請瞭解如何解決問題:

  1. 開啟資訊主頁。
  2. 判斷熱點是否需要您介入處理。
  3. 找出有問題的熱分割。

熱點洞察資料適用於單一區域、多區域和雙區域設定。

定價

使用熱點洞察功能不須支付額外費用。

資料保留

熱點洞察圖表和 TopN 分割資料表的資料保留政策,是以基礎 SPANNER_SYS.SPLIT_STATS_TOP_* 資料表為準。如需特定保留政策,請參閱「熱分割統計資料保留」。

必要的角色

視您是 IAM 使用者還是精密控制權限使用者,您可能需要不同的 IAM 角色和權限。

身分與存取權管理 (IAM) 使用者

如要取得查看「熱點洞察」頁面所需的權限,請要求管理員在執行個體中授予下列 IAM 角色:

如要查看「熱點洞察」頁面,必須具備 Cloud Spanner 資料庫讀取者 (roles/spanner.databaseReader) 角色中的下列權限:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

精細的存取權控管機制使用者

如果您是精細存取權控管使用者,請確認您:

  • 具備 Cloud Spanner 檢視者 (roles/spanner.viewer)
  • 擁有精細的存取權控管權限,並獲派spanner_sys_reader系統角色或其中一個成員角色。
  • 在資料庫「總覽」頁面中,選取 spanner_sys_reader 或成員角色做為目前的系統角色。

詳情請參閱精細存取權控管總覽精細存取權控管系統角色

開啟「資源使用率不均洞察」資訊主頁

「熱點洞察」資訊主頁會顯示分割 CPU 用量百分比的峰值。這項指標是介於 0 到 100 的抽象百分比,反映存取分割內資料列時耗用的 CPU 數量。

如要查看資料庫的「資源使用率不均的深入分析」資訊主頁,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Spanner」頁面。

    前往 Spanner

  2. 從清單中選取執行個體。

  3. 在導覽選單中,按一下「熱點洞察」分頁標籤。

  4. 在「資料庫」欄位中,從清單選取資料庫。資訊主頁會顯示資料庫的最高分割 CPU 用量分數。

這個資訊主頁包含下列元素:

  • 「最高的分割 CPU 用量分數」圖表:較高的 CPU 用量分數 (例如接近 100) 代表分割相當熱門,伺服器極有可能出現資源使用率不均的情況。
  • 資料庫欄位:篩選特定資料庫或所有資料庫的熱分割資訊。
  • 時間範圍篩選器:以 1 分鐘為增量,篩選最多 6 小時的最高分割 CPU 用量。
  • 前幾名分割資料表:顯示依分割 CPU 用量分數排序的前幾名分割清單。

Spanner 中的「熱點洞察」資訊主頁,顯示分割 CPU 用量尖峰的圖表、資料庫選取器、時間範圍篩選器,以及前 N 個熱門分割的表格。

瞭解前幾名分割資料表中的資料: 前幾名分割資料表會根據您選取的時間範圍,從基礎 SPANNER_SYS.SPLIT_STATS_TOP_* 資料表填入資料。詳情請參閱「熱門分割統計資料保留期限」。

解讀 10MINUTEHOUR 資料表中的資料列: 來自 SPANNER_SYS.SPLIT_STATS_TOP_10MINUTESPANNER_SYS.SPLIT_STATS_TOP_HOUR 的資料列代表各間隔的匯總資料。如「表格事件匯總」所述,這些資料列中的 CPU_USAGE_SCORE 是任何基礎 1 分鐘子間隔中出現的最高分數,而 UNSPLITTABLE_REASONS 則是原因的聯集

判斷是否需要介入處理熱點

如果圖表顯示整體延遲時間有尖峰或升高趨勢,且分割 CPU 用量分數持續偏高,則可能需要進一步調查。

查看圖表,瞭解下列問題的答案:

  • 哪個資料庫的延遲時間變長?從「資料庫」清單中選取不同資料庫,找出延遲時間最長的資料庫。如要找出負載最高的資料庫,您也可以在 Google Cloud 控制台中查看資料庫的「延遲時間」圖表

    名為「最高的分割 CPU 用量分數」的折線圖,顯示一段時間內的最高分割 CPU 用量分數。圖表顯示尖峰,可能表示有熱點和潛在延遲問題。

  • 延遲時間是否很長?與工作負載的預期延遲時間相比,延遲時間是否偏高?圖表是否隨時間呈現尖峰或上升趨勢?如果沒有看到高延遲,表示熱點不是問題。

  • 最高的分割 CPU 用量分數是否為 100%?圖表是否出現尖峰,或隨著時間推移而升高?如果持續 10 分鐘以上,您都未看到 CPU 使用率達到 100% 的尖峰值,則熱點可能不是問題。如果 CPU 使用率尖峰值百分比長時間 (超過 10 分鐘) 偏高,建議您進一步調查,確認資料庫的延遲程度是否高於預期。

如果分割區 CPU 使用率在 10 分鐘內都達到 100%,可能就需要介入處理資源使用率不均的情況。接下來,您可以繼續偵錯,找出資料庫中資源使用率不均的分割。

找出有問題的熱分割

如要找出可能出現熱點的問題分割,請參閱 Google Cloud 控制台中的「TopN splits」部分,如下所示。

Spanner 中的「TopN splits」(前 N 個分割) 資料表,列出可能出現問題的分割。資料表包含「間隔結束時間」、「分割開始時間」、「分割限制」、「分割 CPU 用量分數」、「受影響的資料表」和「無法分割的原因」等資料欄。

「前幾名熱門的分割」表格會概略顯示所選時間範圍內可能熱門的分割,並依時間排序 (從最新到最早)。TopN 分割數上限為 100。

就圖表而言,Spanner 會從 TopN 分割統計資料表擷取資料,細微程度為一分鐘。圖表中每個資料點的值代表一分鐘間隔的平均值。

表格會顯示下列屬性:

  • 間隔結束:CPU 使用率高峰期結束的日期和時間。
  • 分割起始鍵:分割內資料列範圍的起始鍵。如果分割起始位置是 <begin>,代表資料庫鍵範圍的開頭。
  • 分割極限:分割內資料列範圍的極限鍵。如果限制鍵是 <end>,表示資料庫的鍵範圍結尾。
  • 分割 CPU 用量分數:介於 0 到 100 之間的抽象分數,反映單一伺服器中,存取分割內資料列耗用的 CPU 數量。您可以參考 CPU 用量分數,評估是否有資源使用率不均的情況。
  • 受影響的資料表:所含資料列可能儲存於分割的資料表。
  • 無法分割的原因:Spanner 無法進一步分割熱分割的原因陣列。如果這裡有值,表示基於列出的原因,以負載為準的分割作業無法減輕熱點問題。詳情請參閱UNSPLITTABLE_REASONS 類型

分析無法分割的原因

「TopN 分割」表格會顯示「無法分割的原因」欄,讓您深入瞭解特定時間受到這些原因影響的具體分割

診斷工作流程範例

以下是使用資訊主頁偵錯熱點的一般工作流程:

  1. 觀察效能問題:注意應用程式的延遲時間是否變長或發生錯誤。
  2. 開啟資源使用率不均洞察:在 Google Cloud 控制台中,前往相關 Spanner 資料庫的「資源使用率不均洞察」資訊主頁。選取與問題相應的時間範圍。
  3. 檢查圖表:
    • 查看「最高的分割 CPU 用量分數」圖表,瞭解是否出現持續高值 (例如 >50%),尤其是接近 100% 且持續至少 10 分鐘的情況。
  4. 找出受影響的分割並建立關聯:如果 CPU 使用率偏高,請前往「前幾名分割」表格。篩選或排序,找出影響時間內分割 CPU 用量分數最高的分割。檢查 UNSPLITTABLE_REASONS 欄中這些熱門分割的資料:
    • 分割 CPU 用量分數偏高,且無法分割:這項強烈信號表示效能問題與熱點有關,Spanner 無法自動解決。原因類型 (例如 HOT_ROWMOVING_HOT_SPOT) 提供重要線索。
    • 分割 CPU 用量分數偏高,且沒有無法分割的原因:熱點可能是新熱點,Spanner 可能仍在分割程序中。或者,問題可能與工作負載的變化有關,這時您不需要採取任何行動。
  5. 瞭解原因:請注意 UNSPLITTABLE_REASONS 陣列中的特定代碼。
  6. 減輕影響:根據已識別的原因,請參閱UNSPLITTABLE_REASONS類型 ,瞭解詳細說明和建議的減輕影響策略,通常包括結構定義設計變更或工作負載調整。

後續步驟