全部產品
Search
文件中心

PolarDB:長交易記錄

更新時間:Sep 17, 2025

本文介紹PolarDB-X的長交易記錄監控功能。

PolarDB-X中慢日誌記錄了執行時間超過某個閾值的SQL語句,而長交易記錄則記錄了執行時間超過某個閾值(預設為3秒)的事務。長事務的存在會導致串連、鎖資源被長期佔用,影響資料庫的並發處理能力,因此PolarDB-X提供了長交易記錄監控的能力。

前提條件

  • 計算節點版本需要不低於5.4.17-16859297。關於如何查看執行個體版本,請參見查看和升級執行個體版本

  • 僅企業版的執行個體支援本功能。

查看長交易記錄

  1. 登入PolarDB分布式版控制台

  2. 在頁面左上方選擇目標執行個體所在地區。

  3. 執行個體列表頁,單擊PolarDB-X 2.0頁簽。

  4. 找到目標執行個體,單擊執行個體ID。

  5. 在左側導覽列中,單擊診斷與最佳化 > 長交易記錄

    名稱

    描述

    長交易記錄趨勢

    展示長交易記錄數量和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洞察。