找出可能導致高延遲的交易

本頁說明如何使用鎖定深入分析和交易深入分析,找出導致高延遲的交易。

總覽

為確保多個並行交易的一致性,Spanner 會使用鎖定來控制資料存取權限。如果許多交易需要頻繁存取相同鎖定,就會發生鎖定爭用情形,導致延遲時間過長。如果沒有視覺化介面,要找出導致大量鎖定爭用問題的交易,可能會非常繁瑣。

當 Spanner 作業屬於讀寫交易時,就會取得鎖定。唯讀交易不會取得鎖定。

Spanner 會引導您完成下列步驟,找出導致高延遲的交易:

  1. 使用 Spanner Monitoring 檢查延遲時間是否突然增加。
  2. 使用鎖定深入分析檢查鎖定爭用問題。
  3. 使用交易洞察資料找出有問題的交易。

定價

使用鎖定洞察或交易洞察功能時,不會產生額外費用。

區域設定

鎖定深入分析和交易深入分析適用於地區和多地區設定。

資料保留

「鎖定洞察」和「交易洞察」資訊主頁最多只會顯示 30 天內的資料。如果是圖表,系統會從 SPANNER_SYS.* 資料表擷取資料,這些資料表的保留期限最多為 30 天。

如要進一步瞭解這些資料表和資料保留機制,請參閱「鎖定統計資料」和「交易統計資料」。

必要的角色

視您是 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 或成員角色做為目前的系統角色。

詳情請參閱「關於精細存取權控管機制」和「 精細存取權控管系統角色」。

使用 Spanner Monitoring 檢查延遲時間是否突然增加

您可以透過 Cloud Monitoring,為所有要求設定指標快訊,在指標超過指定門檻時收到通知。

如果收到快訊,指出執行個體的延遲時間突然增加,您可以在 Spanner 監控資訊主頁上確認,該資訊主頁會顯示各種重要指標的圖表。「延遲時間」圖表可協助您查看第 50 和第 99 個百分位數的高延遲時間。

如要確認第 99 百分位數的寫入延遲時間是否出現尖峰,請按照下列步驟操作:

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

    前往 Spanner 執行個體

  2. 按一下執行個體的名稱。

    Google Cloud 主控台會顯示執行個體總覽。

  3. 按一下導覽選單中的「監控」

    Google Cloud 控制台會顯示執行個體的資料圖表。

  4. 在「延遲」圖表中,將「函式」設為 Write,並將「百分位數」設為 99th

  5. 查看更新後的圖表,確認是否出現任何尖峰。

圖表:顯示第 99 個百分位數的寫入延遲時間

如果發現 CPU 使用率並未飆升,但每秒作業數的錯誤次數卻大幅增加,可能是因為鎖定爭用導致延遲時間飆升。

使用鎖定深入分析結果檢查鎖定爭用問題

鎖定洞察資訊主頁可協助您查看執行個體或所選資料庫中的鎖定等待時間。有助於確認高延遲是否是由鎖定爭用所致。

檢查鎖定等待時間是否過長

如要檢查鎖定等待時間是否過長,請按照下列步驟操作:

  1. 按一下導覽選單中的「鎖定洞察」

    Google Cloud 控制台會顯示「鎖定等待總時間」圖表,其中會列出執行個體中每個資料庫的鎖定等待時間。

    根據預設,系統會顯示 1 hour 的資料,如鎖定洞察資訊主頁右上角的時間選取器所示。如要查看更廣範圍的資料,請選取其他選項,例如 1 day

    詳情請參閱「使用圖表」。

  2. 從頂端的「Databases」(資料庫) 選取器中,選取鎖定等待時間最長的資料庫。

    「鎖定等待總時間」圖表會重新整理,只顯示所選資料庫的資料。

    此外,另一個圖表「每個資料列範圍的鎖定等待時間」會顯示資料列範圍的鎖定等待時間圖表。

  3. 點選圖表並水平拖曳,即可展開顯示延遲尖峰的小時。

鎖定深入分析資訊主頁

分析鎖定等待資料

「鎖定洞察」表格會顯示來自 SPANNER_SYS.LOCK_STATS 系統表格的下列資料欄:

  • 資料列範圍起始索引鍵:發生鎖定衝突的資料列索引鍵。如果衝突涉及一系列資料列,這個值代表範圍的起始鍵。加號 (+) 代表範圍。
  • 鎖定等待:以水平長條顯示總鎖定等待時間。根據預設,表格會使用這個資料欄進行排序,並在頂端顯示鎖定等待時間最長的資料列範圍起始鍵。
  • 鎖定等待時間 (秒):資料列鍵範圍內所有資料欄記錄的鎖定衝突累計鎖定等待時間 (以秒為單位)。
  • 鎖定等待時間 (%):針對資料列鍵範圍內所有資料欄記錄的鎖定衝突等待時間,占資料庫中所有資料列鍵範圍總鎖定等待時間的百分比。

如要將「每列範圍的鎖定等待時間」圖表中的資料與表格中的資料相互關聯,請選取一行。相關資料列會以醒目方式顯示。反之,選取表格中某列的核取方塊,即可在圖表中查看相關折線。

鎖定深入分析表格

如要篩選表格中的資料,請按照下列步驟操作:

  1. 按一下「篩選器」旁的欄位。

  2. 選取屬性、運算子並指定值。

表格會顯示符合篩選條件的資料。

查看範例鎖定要求

「範例鎖定要求」面板會顯示來自競爭交易的範例鎖定要求詳細資料。

如要查看某個資料列範圍起始鍵的鎖定要求資訊範例,請按一下表格中的相關連結。

表格會顯示下列資訊欄:

  • 範例資料欄名稱:在資料列鍵範圍內發生鎖定衝突的資料欄。
  • 鎖定模式:要求的鎖定模式
  • 查看交易記錄交易洞察頁面的連結,顯示可能爭奪鎖定的交易。

「鎖定深入分析」詳細資料頁面

使用交易洞察找出競爭交易

交易洞察資訊主頁可協助您查看執行個體或所選資料庫中的交易延遲時間。有助於找出可能因鎖定爭用而導致高延遲的交易。

查看交易延遲時間

如要查看交易延遲時間,請按照下列步驟操作:

  1. 按一下左側導覽列中的「交易洞察」

  2. 從頂端的「Databases」(資料庫) 選取器中,選取鎖定等待時間最長的資料庫。

    或者,在鎖定洞察資料資訊主頁中,按一下「查看交易」,篩選讀取或寫入特定樣本資料欄的交易。

    根據預設,系統會顯示 1 hour 的資料,如交易洞察資訊主頁右上角的時段選取器所示。

資訊主頁會顯示下列圖表:

  • 「平均延遲時間 (所有交易)」圖表會顯示執行個體中所有交易的延遲時間。

  • 「平均延遲時間 (每筆交易)」圖表會顯示所選資料庫中每筆交易的延遲時間。

交易洞察資訊主頁

分析交易資料

您可以在圖表下方的表格中,查看及分析每筆交易的資料。下表會顯示 SPANNER_SYS.TXN_STATS 系統資料表中的指標資料:

  • 指紋:交易代碼的雜湊 (如有)。否則,系統會根據交易涉及的作業計算雜湊。這個值是連結,可前往「交易詳細資料」頁面
  • 交易標記:交易的選用交易標記。如果多筆交易具有相同的標記字串,系統會將這些交易的統計資料歸類在同一列,並以與標記字串相符的 TRANSACTION_TAG 標籤標示。
  • 受影響的資料表:交易影響的資料表。
  • Table.column Read:交易讀取的資料欄。
  • Table.column Written:交易寫入的資料欄。
  • 平均延遲時間 (秒):執行交易的平均秒數。 根據預設,表格會依遞減順序排序這個資料欄。

如要將「每筆交易的平均延遲時間」圖表中的資料與表格中的資料相互比較,請選取圖表中的線條。表格中相應的資料列會醒目顯示。

如要篩選表格中的資料,請按照下列步驟操作:

  1. 按一下「篩選器」旁邊的

  2. 選取屬性、運算子並指定值。

表格會顯示符合篩選條件的資料。

「交易洞察」資料表

查看交易詳細資訊

如要查看交易的詳細資訊 (例如延遲時間最長的交易),請按一下表格中相應資料列的「指紋」連結。

「交易明細」頁面隨即顯示。除了頂端的詳細資料表,還會顯示下列資訊:

  • 長條,顯示下列各項指標的數值:

    • 平均位元組數:交易寫入的平均位元組數。
    • 平均延遲時間:從交易的第一項作業到提交或中止作業,平均需要幾秒。
    • 平均修訂版本延遲時間:執行修訂版本作業的平均時間 (以秒為單位)。
    • 總嘗試次數:交易嘗試總次數。
    • 中止總數:中止的交易嘗試總數,包括在呼叫交易的提交方法前中止的交易。
  • 顯示這些值的圖表。

    此外,「平均參與者」圖表會顯示每次提交嘗試的平均參與者人數。

「交易洞察資料」詳細資料頁面

調查是否可最佳化交易形狀,以減少延遲。 建議您套用最佳做法,減少鎖定爭用

後續步驟