NDB
管理用戶端的 CLUSTERLOG STATISTICS
命令可以在其輸出中提供許多有用的統計資料。交易協調器 (TC) 和本機查詢處理器 (LQH) 會以 5 秒的報告間隔更新提供叢集狀態資訊的計數器,並寫入叢集記錄檔。
交易協調器統計資料。 每個交易都有一個交易協調器,它會由下列方法之一選擇
以循環方式
透過通訊鄰近性
在交易啟動時提供資料放置提示
您可以使用 ndb_optimized_node_selection
系統變數來判斷從給定的 SQL 節點啟動的交易使用哪個 TC 選擇方法。
同一交易中的所有作業都使用相同的交易協調器,該協調器會報告下列統計資料
交易計數。 這是上個間隔中使用此 TC 作為交易協調器啟動的交易數量。這些交易中的任何一個可能已在報告間隔結束時提交、已中止或仍未提交。
注意交易不會在 TC 之間移轉。
提交計數。 這是使用此 TC 作為交易協調器且在上個報告間隔中提交的交易數量。由於在此報告間隔中提交的某些交易可能在先前的報告間隔中開始,因此
提交計數
可能大於交易計數
。讀取計數。 這是上個報告間隔中使用此 TC 作為交易協調器啟動的主要金鑰讀取作業數量,包括簡單讀取。此計數還包括作為唯一索引作業一部分執行的讀取。唯一索引讀取作業會產生 2 個主要金鑰讀取作業 — 1 個用於隱藏的唯一索引表格,1 個用於執行讀取的表格。
簡單讀取計數。 這是上個報告間隔中使用此 TC 作為交易協調器啟動的簡單讀取作業數量。
寫入計數。 這是上個報告間隔中使用此 TC 作為交易協調器啟動的主要金鑰寫入作業數量。這包括所有插入、更新、寫入和刪除,以及作為唯一索引作業一部分執行的寫入。
注意唯一索引更新作業可以在索引表格和基本表格上產生多個 PK 讀取和寫入作業。
AttrInfoCount。 這是上個報告間隔中使用此 TC 作為交易協調器的主要金鑰作業中接收的 32 位元資料字組數量。對於讀取,這與請求的欄數成正比。對於插入和更新,這與寫入的欄數及其資料大小成正比。對於刪除作業,這通常為零。
唯一索引作業會產生多個 PK 作業,因此會增加此計數。但是,傳送以描述 PK 作業本身以及傳送的金鑰資訊的資料字組在這裡不計算在內。傳送以描述掃描要讀取的欄或描述 ScanFilter 的屬性資訊也不會計算在
AttrInfoCount
中。並行作業。 這是上個報告間隔中啟動但未完成的使用此 TC 作為交易協調器的主要金鑰或掃描作業數量。作業會在啟動時遞增此計數器,並在完成時遞減計數器;這會在交易提交後發生。髒讀取和寫入,以及失敗的作業,都會遞減此計數器。
並行作業
可以擁有的最大值是 TC 區塊可以支援的最大作業數;目前,這是(2 * MaxNoOfConcurrentOperations) + 16 + MaxNoOfConcurrentTransactions
。(如需這些組態參數的詳細資訊,請參閱 第 25.4.3.6 節「定義 NDB 叢集資料節點」的交易參數一節。)中止計數。 這是上個報告間隔中使用此 TC 作為交易協調器而中止的交易數量。由於在上個報告間隔中中止的某些交易可能在先前的報告間隔中開始,
中止計數
有時可能會大於交易計數
。掃描。 這是上個報告間隔中使用此 TC 作為交易協調器啟動的表格掃描數量。這不包括範圍掃描(即,已排序的索引掃描)。
範圍掃描。 這是上個報告間隔中使用此 TC 作為交易協調器啟動的已排序索引掃描數量。
本機讀取。 這是使用交易協調器在也持有記錄主要片段複本的節點上執行的主要金鑰讀取作業數量。此計數也可以從
ndbinfo.counters
表格中的LOCAL_READS
計數器取得。本機寫入。 這包含使用交易協調器在也持有記錄主要片段複本的節點上執行的主要金鑰讀取作業數量。此計數也可以從
ndbinfo.counters
表格中的LOCAL_WRITES
計數器取得。
本機查詢處理器統計資料(作業)。 每個本機查詢處理器區塊都有 1 個叢集事件(即,每個資料節點程序有 1 個)。作業會記錄在資料所在的 LQH 中。
單一交易可能會在多個 LQH 區塊中儲存的資料上執行作業。
作業
統計資料提供此 LQH 區塊在上個報告間隔中執行的本機作業數量,並且包括所有類型的讀取和寫入作業(插入、更新、寫入和刪除作業)。這還包括用於複寫寫入的作業。例如,在具有兩個片段複本的叢集中,對主要片段複本的寫入會記錄在主要 LQH 中,而對備份的寫入會記錄在備份 LQH 中。唯一金鑰作業可能會導致多個本機作業;但是,這不包括因表格掃描或已排序索引掃描而產生的本機作業,這些作業不會計算在內。
程序排程器統計資訊。 除了交易協調器和本地查詢處理器所回報的統計資訊外,每個 ndbd 程序都有一個排程器,該排程器也提供與 NDB Cluster 效能相關的有用指標。此排程器會在無限迴圈中執行;在每個迴圈中,排程器會執行下列任務:
將任何來自 Socket 的傳入訊息讀入工作緩衝區。
檢查是否有任何定時訊息要執行;如果有,也將這些訊息放入工作緩衝區。
執行(在迴圈中)工作緩衝區中的任何訊息。
傳送執行工作緩衝區中的訊息所產生的任何分散式訊息。
等待任何新的傳入訊息。
程序排程器統計資訊包括下列內容:
平均迴圈計數器。 這是執行前述清單中第三步驟的迴圈次數。此統計資訊的大小會隨著 TCP/IP 緩衝區的利用率提高而增加。您可以使用它來監控新增資料節點程序時效能的變化。
平均傳送大小和平均接收大小。 這些統計資訊可讓您分別衡量節點之間寫入和讀取的效率。這些值以位元組為單位。值越高表示每個傳送或接收的位元組成本越低;最大值為 64K。
若要記錄所有叢集日誌統計資訊,您可以在 NDB
管理用戶端中使用下列命令:
ndb_mgm> ALL CLUSTERLOG STATISTICS=15
將 STATISTICS
的閾值設定為 15 會導致叢集日誌變得非常冗長,並且大小會快速增加,與叢集節點數和 NDB Cluster 中的活動量成正比。
如需有關與記錄和報告相關的 NDB Cluster 管理用戶端命令的詳細資訊,請參閱第 25.6.3.1 節「NDB Cluster 記錄管理命令」。