本頁面說明如何使用鎖定深入分析和交易深入分析,找出導致高延遲的交易。
總覽
為確保多個並行交易的一致性,Spanner 會使用鎖定來控管資料存取權。當許多交易需要頻繁存取同一個鎖定時,就會發生鎖定爭用,導致延遲時間過長。如果沒有視覺化介面,可能需要花費大量時間,才能找出導致大量鎖定爭用問題的交易。
如果 Spanner 作業屬於讀寫交易,就會取得鎖定。唯讀交易不會取得鎖定。
Spanner 會引導您完成下列步驟,協助找出導致高延遲的交易:
定價
使用鎖定深入分析或交易深入分析時,不會產生額外費用。
區域設定
鎖定深入分析和交易深入分析適用於單一區域和多區域設定。
資料保留
「鎖定深入分析」和「交易深入分析」資訊主頁顯示的資料,保留期限最長為 30 天。如果是圖表,系統會從 SPANNER_SYS.* 資料表擷取資料,這些資料表的保留期限最多為 30 天。
如要進一步瞭解這些表格和資料保留機制,請參閱「鎖定統計資料」和「交易統計資料」。
必要的角色
視您是 IAM 使用者還是精細存取權控管使用者,您需要不同的 IAM 角色和權限。
Identity and Access Management (IAM) 使用者
如要取得查看「鎖定和交易洞察」頁面所需的權限,請要求管理員在執行個體中授予您下列 IAM 角色:
-
全部:
- Cloud Spanner 檢視者 (
roles/spanner.viewer) - Cloud Spanner 資料庫讀取者 (
roles/spanner.databaseReader)
- Cloud Spanner 檢視者 (
如要查看「鎖定與交易洞察」頁面,必須具備「Cloud Spanner 資料庫讀取者」 (
roles/spanner.databaseReader) 角色中的下列權限:
spanner.databases.beginReadOnlyTransactionspanner.databases.selectspanner.sessions.create
精細的存取控管使用者
如果您是精細存取權控管機制使用者,請確認您:
- 擁有 Cloud Spanner 檢視者(
roles/spanner.viewer)- 僅具備精細的存取控管權限,且獲派
spanner_sys_reader系統角色或其中一個成員角色。
- 僅具備精細的存取控管權限,且獲派
- 在資料庫總覽頁面中,選取
spanner_sys_reader或成員角色做為目前的系統角色。
詳情請參閱「關於精細存取控管機制」和「 精細存取控管系統角色」。
使用 Spanner Monitoring 檢查延遲時間是否突然增加
您可以使用 Cloud Monitoring,針對所有要求設定指標的快訊,在指標超過指定門檻時觸發快訊。
如果收到執行個體延遲時間突然增加的快訊,請前往 Spanner 監控資訊主頁確認,該頁面會顯示各種重要指標的圖表。「延遲」圖表可協助您查看第 50 和第 99 個百分位數的高延遲。
如要確認寫入延遲時間第 99 百分位數是否出現高峰,請按照下列步驟操作:
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下執行個體的名稱。
Google Cloud 控制台會顯示執行個體的總覽。
按一下導覽選單中的「監控」。
Google Cloud 控制台會顯示執行個體的資料圖表。
在「Latency」(延遲時間) 圖表上,將「Function」(函式) 設為
Write,並將「Percentile」(百分位數) 設為99th。查看重新整理後的圖表,確認是否出現任何尖峰。

如果發現 CPU 使用率並未飆升,但每秒作業數的錯誤次數飆升,延遲時間可能就是因為鎖定爭用而飆升。
使用鎖定深入分析功能檢查鎖定爭用問題
鎖定洞察資訊主頁可協助您查看執行個體或所選資料庫中的鎖定等待時間。這有助於確認高延遲是否是由於鎖定爭用所致。
檢查鎖定等待時間是否過長
如要檢查鎖定等待時間是否過長,請按照下列步驟操作:
按一下導覽選單中的「鎖定洞察」。
Google Cloud 控制台會顯示「鎖定等待時間總計」圖表,其中會顯示執行個體中每個資料庫的鎖定等待時間,單位為每分鐘的鎖定等待秒數。
根據預設,系統會顯示
1 hour的資料,如鎖定洞察資訊主頁右上角的時間選取器所示。如要查看更廣範圍的資料,請選取其他選項,例如1 day。詳情請參閱「使用圖表」。
從頂端的「Databases」(資料庫) 選取器,選取鎖定等待時間最長的資料庫。
「Total lock wait」(鎖定等待總時間) 圖表會重新整理,只顯示所選資料庫的資料。
此外,另一個圖表「每個資料列範圍的鎖定等待時間」會顯示資料列範圍的鎖定等待時間圖表。
點選圖表並水平拖曳,即可展開顯示延遲尖峰的時間。

分析鎖定等待資料
「鎖定洞察」表格會顯示來自 SPANNER_SYS.LOCK_STATS 系統資料表的下列資料欄:
- 資料列範圍起始索引鍵:發生鎖定衝突的資料列索引鍵。如果衝突涉及一系列資料列,這個值代表範圍的起始鍵。加號 (
+) 代表範圍。 - 鎖定等待時間:以水平長條圖呈現的總鎖定等待時間。根據預設,表格會使用這個資料欄進行排序,並在頂端顯示鎖定等待時間最長的一列範圍起始鍵。
- 鎖定等待時間 (秒):資料列索引鍵範圍內所有資料欄記錄的鎖定衝突累計鎖定等待時間,以秒為單位。
- 鎖定等待時間 (%):資料庫中所有資料列索引鍵範圍的總鎖定等待時間,以百分比表示,是資料列索引鍵範圍內所有資料欄記錄的鎖定衝突等待時間。
如要將「每列範圍的鎖定等待時間」圖表中的資料與表格中的資料相互比較,請選取一行。相關列會以醒目顏色標示。反之,勾選表格中某一列的核取方塊,即可在圖表上查看相關線條。

如要篩選表格中的資料,請按照下列步驟操作:
按一下「篩選器」旁的欄位。
選取屬性、運算子,然後指定值。
表格會顯示符合篩選條件的資料。
查看鎖定要求範例
「範例鎖定要求」面板會顯示來自競爭交易的範例鎖定要求詳細資料。
如要查看列範圍起始鍵的鎖定要求資訊範例,請按一下表格中的相關連結。
表格會顯示下列資訊欄:
- 範例資料欄名稱:資料列索引鍵範圍發生鎖定衝突的資料欄。
- 鎖定模式:要求的鎖定模式。
- 查看交易記錄:交易洞察頁面的連結,顯示可能爭奪鎖定的交易。
使用交易洞察找出競爭交易
交易洞察資訊主頁可協助您查看執行個體或所選資料庫中的交易延遲時間。有助於找出可能因鎖定爭用而導致高延遲的交易。
查看交易的延遲時間
如要查看交易延遲時間,請按照下列步驟操作:
按一下左側導覽面板中的「交易洞察」。
從頂端的「資料庫」選取器中,選取鎖定等待時間最長的資料庫。
或者,在鎖定洞察資料資訊主頁中,按一下「查看交易」,篩選讀取或寫入特定樣本資料欄的交易。
根據預設,系統會顯示
1 hour的資料,如「交易深入分析」資訊主頁右上角的時間選取器所示。
資訊主頁會顯示下列圖表:
「Average latency (all transactions)」(平均延遲時間 (所有交易)) 圖表會顯示執行個體中所有交易的延遲時間。
「平均延遲時間 (每筆交易)」圖表會顯示所選資料庫中每筆交易的延遲時間。

分析交易資料
您可以在圖表下方的表格中,查看及分析每筆交易的資料。下表顯示來自SPANNER_SYS.TXN_STATS系統資料表的指標資料:
- 指紋:交易代碼的雜湊值 (如有)。否則,系統會根據交易涉及的作業計算雜湊。這個值是交易明細頁面的連結。
- 交易標記:交易的選用交易標記。如果多筆交易的標記字串相同,系統會將這些交易的統計資料歸入同一列,並以與標記字串相符的
TRANSACTION_TAG標籤標示。 - 受影響的資料表:受交易影響的資料表。
- Table.column Read:交易讀取的資料欄。
- Table.column Written:交易寫入的資料欄。
- 平均延遲時間 (秒):執行交易的平均秒數。 根據預設,表格會依這欄遞減排序。
如要將「每筆交易的平均延遲時間」圖表中的資料與表格中的資料相互比較,請選取圖表中的線條。表格中對應的資料列會醒目顯示。
如要篩選表格中的資料,請按照下列步驟操作:
按一下「篩選器」旁的 。
選取屬性、運算子,然後指定值。
表格會顯示符合篩選條件的資料。

查看交易詳細資訊
如要查看交易的詳細資訊 (例如延遲時間最長的交易),請按一下表格中對應資料列的「Fingerprint」(指紋) 連結。
系統隨即會顯示「交易明細」頁面。除了頂端的詳細資料表,還會顯示下列資訊:
長條圖,顯示下列各項指標的數值:
顯示這些值的圖表。「總嘗試次數和取消次數」圖表會顯示每分鐘的交易嘗試次數 (以每分鐘嘗試次數為單位) 和取消次數 (以每分鐘取消次數為單位)。如要顯示每分鐘的交易嘗試次數和中止次數, Google Cloud 控制台會查詢最符合所選日期範圍的
SPANNER_SYS.TXN_STATS_TOP_*資料表 (_MINUTE、_10MINUTE或_HOUR)。接著, Google Cloud 控制台會將所選資料表的ATTEMPT_COUNT欄和COMMIT_ABORT_COUNT欄中的值除以間隔時間長度 (以分鐘為單位,1、10 或 60),計算出每分鐘的比例。如要進一步瞭解間隔,請參閱「交易統計資料」。此外,「平均參與者」圖表會顯示每次提交嘗試的平均參與者人數。

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