本文介紹PolarDB-X的長交易記錄監控功能。
PolarDB-X中慢日誌記錄了執行時間超過某個閾值的SQL語句,而長交易記錄則記錄了執行時間超過某個閾值(預設為3秒)的事務。長事務的存在會導致串連、鎖資源被長期佔用,影響資料庫的並發處理能力,因此PolarDB-X提供了長交易記錄監控的能力。
前提條件
計算節點版本需要不低於5.4.17-16859297。關於如何查看執行個體版本,請參見查看和升級執行個體版本。
僅企業版的執行個體支援本功能。
查看長交易記錄
在頁面左上方選擇目標執行個體所在地區。
在執行個體列表頁,單擊PolarDB-X 2.0頁簽。
找到目標執行個體,單擊執行個體ID。
在左側導覽列中,單擊診斷與最佳化 > 長交易記錄。
名稱
描述
長交易記錄趨勢
展示長交易記錄數量和CPU使用率一起隨時間的變化趨勢,判斷兩者的關聯關係。
節點列表
展示指定時間範圍內,各個計算節點上產生的長交易記錄的數量。單擊某個節點後,可以跳轉到針對該節點的長交易記錄頁面。
長交易記錄明細
各個長交易記錄的詳細資料。
長交易記錄統計
長交易記錄的統計資料。
長交易記錄統計
根據事務模板對給定時間範圍內的長交易記錄做統計。
事務模板
每個事務由一個SQL序列組成,每條SQL有其SQL模板,可以由SQL序列得到一個SQL模板序列。SQL序列因為查詢參數等變數,兩個序列不一定相同,而業務中往往存在代表某一類業務操作的SQL模板序列,在此我們稱之為事務模板。
樣本
以一個轉賬事務的例子進行說明。
事務1:Mike向John轉賬1元。
begin;
update account set balance = balance + 1 where name = 'Mike';
update account set balance = balance - 1 where name = 'John';
commit;事務2:Mike向John轉賬10元。
begin;
update account set balance = balance + 10 where name = 'Mike';
update account set balance = balance - 10 where name = 'John';
commit;事務1和事務2的事務模板為:某人向某人轉賬某元。
update account set balance = balance + ? where name = ?;
update account set balance = balance - ? where name = ?;如果給定時間範圍內,發生類似這樣的轉賬N次,則這個長事務模板的統計次數為N。
欄位說明
名稱 | 說明 |
事務模板ID | 事務模板的HASH值。 |
庫名 | 資料庫名稱。 |
執行次數 | 總計執行次數。 |
平均執行時間 | 平均執行時間=執行時間總和/執行次數,單位:秒。 |
最大執行時間 | 最大執行時間=max(每個事務的執行時間),單位:秒。 |
平均空閑時間 | 平均空閑時間=總空閑時間/執行次數,單位:秒。 |
平均寫行數 | 平均寫行數=總寫行數/執行次數。 |
最大寫行數 | 最大寫行數=max(每個事務的寫行數)。 |
平均讀行數 | 平均讀行數=從CN上讀取行數總和/執行次數。 |
最大返回行 | 最大返回行數=max(每個事務的返回行)。 |
SQL數量 | 事務中包含的SQL數量,不包含begin、commit、rollback語句。 |
操作 | 可以查看長交易記錄的樣本。 |
長交易記錄明細
長交易記錄明細查看針對單個節點查詢,需要在下拉框裡選擇節點。
欄位說明
名稱 | 說明 |
執行完成時間 | 事務的結束時間。 |
事務ID | 事務的編號。 |
狀態 | 事務結束時的狀態。 |
用戶端 | 用戶端的地址,格式為{ip}:{port}。 |
庫名 | 資料庫名稱。 |
使用者 | 資料庫使用者名稱稱。 |
執行耗時(秒) | 執行耗費的時間,單位:秒。 |
空閑時間 | 事務閒置時間,單位:秒。 |
寫行數 | 寫入的行數。 |
讀行數 | 從DN讀取的行數。 |
SQL數量 | 發送給DN的SQL數量。 |
操作 | 查看SQL,跳轉到SQL洞察頁面查看該事務下的SQL列表。 說明 需要該執行個體已經預先開啟SQL洞察。 |