本頁說明如何使用鎖定深入分析和交易深入分析,找出導致高延遲的交易。
總覽
為確保多個並行交易的一致性,Spanner 會使用鎖定來控管資料存取權。如果許多交易需要頻繁存取同一個鎖定,就會發生鎖定爭用情形,導致延遲時間過長。如果沒有視覺化介面,要找出導致大量鎖定爭用問題的交易,可能會非常繁瑣。
如果 Spanner 作業屬於讀寫交易,就會取得鎖定。唯讀交易不會取得鎖定。
Spanner 會引導您完成下列步驟,找出導致高延遲的交易:
定價
使用鎖定洞察或交易洞察功能時,不會產生額外費用。
區域設定
鎖定洞察和交易洞察適用於地區和多地區設定。
資料保留
「鎖定洞察」和「交易洞察」資訊主頁最多只會保留 30 天的資料。如果是圖表,系統會從 SPANNER_SYS.*
資料表擷取資料,這些資料表最多可保留 30 天。
如要進一步瞭解這些資料表和資料保留時間,請參閱「鎖定統計資料」和「交易統計資料」。
必要的角色
視您是 IAM 使用者還是精細存取權控管使用者,您需要不同的 IAM 角色和權限。
身分與存取權管理 (IAM) 使用者
如要取得查看「鎖定和交易洞察」頁面所需的權限,請要求管理員在執行個體上授予您下列 IAM 角色:
-
Cloud Spanner 檢視者 (
roles/spanner.viewer
) -
Cloud Spanner 資料庫讀取者 (
roles/spanner.databaseReader
)
如要查看「鎖定和交易洞察」頁面,必須具備 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 Monitoring 資訊主頁上確認,該資訊主頁會顯示各種重要指標的圖表。延遲圖表可協助您查看第 50 和第 99 個百分位數的高延遲。
如要確認第 99 個百分位數的寫入延遲時間是否大幅增加,請按照下列步驟操作:
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下執行個體的名稱。
Google Cloud 主控台會顯示執行個體總覽。
按一下導覽選單中的「監控」。
Google Cloud 控制台會顯示執行個體的資料圖表。
在「延遲」圖表中,將「函式」設為
Write
,並將「百分位數」設為99th
。查看更新後的圖表,確認是否出現任何尖峰。
如果發現 CPU 使用率並未飆升,但每秒作業數的錯誤次數卻大幅增加,則延遲時間飆升可能是因為鎖定爭用。
使用鎖定深入分析結果檢查鎖定爭用問題
鎖定洞察資訊主頁可協助您查看執行個體或所選資料庫中的鎖定等待時間。有助於確認高延遲是否是由鎖定爭用所致。
檢查鎖定等待時間是否過長
如要檢查鎖定等待時間是否過長,請按照下列步驟操作:
按一下導覽選單中的「鎖定洞察」。
Google Cloud 控制台會顯示「鎖定等待總時間」圖表,其中會列出執行個體中每個資料庫的鎖定等待時間。
根據預設,系統會顯示
1 hour
的資料,如鎖定洞察資訊主頁右上角的時間選取器所示。如要查看更廣範圍的資料,請選取其他選項,例如1 day
。詳情請參閱「使用圖表」。
從頂端的「資料庫」選取器中,選取鎖定等待時間最長的資料庫。
「鎖定等待總時間」圖表會重新整理,只顯示所選資料庫的資料。
此外,另一個圖表「每個資料列範圍的鎖定等待時間」會顯示資料列範圍的鎖定等待時間圖表。
按一下圖表並水平拖曳,即可展開顯示延遲尖峰的小時。
分析鎖定等待資料
「鎖定洞察」表格會顯示來自 SPANNER_SYS.LOCK_STATS
系統資料表的下列資料欄:
- 資料列範圍起始索引鍵:發生鎖定衝突的資料列索引鍵。如果衝突涉及一系列資料列,這個值代表該範圍的起始鍵。加號 (
+
) 代表範圍。 - 鎖定等待時間:以水平長條圖呈現的鎖定等待總時間。根據預設,表格會使用這個資料欄進行排序,並在頂端顯示鎖定等待時間最長的資料列範圍起始鍵。
- 鎖定等待時間 (秒):以秒為單位,記錄列鍵範圍內所有資料欄的累計鎖定等待時間。
- 鎖定等待 (%):針對資料列鍵範圍內所有資料欄記錄的鎖定衝突等待時間,占資料庫中所有資料列鍵範圍總鎖定等待時間的百分比。
如要將「每列範圍的鎖定等待時間」圖表中的資料與表格中的資料相互比較,請選取一行。相關資料列會以醒目方式顯示。反之,選取表格中某列的核取方塊,即可在圖表中查看相關折線。
如要篩選表格中的資料,請按照下列步驟操作:
按一下「篩選」旁的文字方塊。
選取屬性、運算子並指定值。
表格會顯示符合篩選條件的資料。
查看範例鎖定要求
「範例鎖定要求」面板會顯示來自競爭交易的範例鎖定要求詳細資料。
如要查看資料列範圍起始鍵的鎖定要求資訊範例,請按一下表格中的相關連結。
表格會顯示下列資訊欄:
- 範例資料欄名稱:在資料列鍵範圍內發生鎖定衝突的資料欄。
- 鎖定模式:要求的鎖定模式。
- 查看交易記錄:交易洞察頁面的連結,顯示可能爭用鎖定的交易。
使用交易深入分析找出競爭交易
交易洞察資訊主頁可協助您查看執行個體或所選資料庫中的交易延遲時間。有助於找出可能因鎖定爭用而導致高延遲的交易。
查看交易延遲時間
如要查看交易延遲時間,請按照下列步驟操作:
按一下左側導覽列中的「交易洞察」。
從頂端的「資料庫」選取器中,選取鎖定等待時間最長的資料庫。
或者,在 Lock 洞察資訊主頁中,按一下「查看交易」,篩選讀取或寫入特定樣本資料欄的交易。
如交易洞察資訊主頁右上角的時段選取器所示,系統預設會顯示
1 hour
的資料。
資訊主頁會顯示下列圖表:
「平均延遲時間 (所有交易)」圖表會顯示執行個體中所有交易的延遲時間。
「平均延遲時間 (每筆交易)」圖表會顯示所選資料庫中每筆交易的延遲時間。
分析交易資料
您可以在圖表下方的表格中,查看及分析每筆交易的資料。下表會顯示 SPANNER_SYS.TXN_STATS
系統資料表中的指標資料,並列於下列資料欄:
- 指紋:交易代碼的雜湊 (如有)。否則,系統會根據交易涉及的作業計算雜湊。這個值是交易詳細資料頁面的連結。
- 交易標記:交易的選用交易標記。如果多筆交易的標記字串相同,系統會將這些交易的統計資料歸入同一列,並以與標記字串相符的
TRANSACTION_TAG
標籤表示。 - 受影響的資料表:交易影響的資料表。
- Table.column Read:交易讀取的資料欄。
- Table.column Written:交易寫入的資料欄。
- 平均延遲時間 (秒):執行交易的平均秒數。 根據預設,表格會依遞減順序排序這個資料欄。
如要將「每筆交易的平均延遲時間」圖表中的資料與表格中的資料相互比較,請選取圖表中的線條。表格中對應的資料列會醒目顯示。
如要篩選表格中的資料,請按照下列步驟操作:
按一下「篩選器」旁的 。
選取屬性、運算子並指定值。
表格會顯示符合篩選條件的資料。
查看交易詳細資訊
如要查看交易的詳細資訊 (例如延遲時間最長的交易),請按一下表格中相應列的「指紋」連結。
「交易明細」頁面隨即顯示。除了頂端的詳細資料表,還會顯示下列資訊:
長條,顯示下列各項指標的數值:
- 平均位元組數:交易寫入的平均位元組數。
- 平均延遲時間:從交易的第一項作業到提交或中止,平均需要幾秒。
- 平均修訂版本延遲時間:執行修訂版本作業的平均時間 (以秒為單位)。
- 總嘗試次數:交易嘗試總次數。
- 交易中止總數:交易嘗試中止的總數,包括在呼叫交易的提交方法前中止的交易。
顯示這些值的圖表。
此外,「平均參與者」圖表會顯示每次提交嘗試的平均參與者人數。
調查是否可最佳化交易形狀,以縮短延遲時間。 建議您套用最佳做法,減少鎖定爭用情形。