Sql-Server

可用性組 - AG 儀表板上顯示的重做率與 Perfmon 計數器

  • May 14, 2021

我對從 Always on AG 儀表板上檢查REDO Rate KB/Sec的指標感到有些困惑,在某些情況下,這與 perfmon 計數器數據庫副本匹配:重做字節/秒(希望它是通過 perfmon 重做速率的正確計數器),有時一點也不。

大多數情況下,當有大量活動正在進行時,我認為 AG 儀表板和 DMV 在給定時間顯示 REDO 速率為例如 40 MB/秒,這與 perfmon 計數器相匹配。

但是,在較少的活動時間或沒有太多要發送給 sec 的情況下,與 perfmon 計數器相比,儀表板和 dmv 上的 REDO Rate 似乎顯示不正確的值。

無法理解哪個值是正確的以及如何分析。知道為什麼或者它是儀表板中的錯誤嗎?

按要求截圖:

在此處輸入圖像描述

在那段時間沒有發生任何交易 - 初級端沒有主要活動。我正在輔助和主伺服器上收集該性能,因為在故障轉移新的輔助伺服器後,我們仍然需要執行這些計數器。但是,螢幕截圖性能數據中提取的數據來自輔助數據。

這兩個數字測量的東西略有不同。沒錯,它們都是重做測量,但它們以不同的方式進行。

Perfmon 計數器近乎實時地更新- 它是最後一秒重做的字節數:

上一秒重做的日誌記錄數量以趕上數據庫副本

AG 儀表板基於DMV,特別是sys.dm_hadr_database_replica_statesredo_rate

在給定的輔助數據庫上重做日誌記錄的平均速率,以千字節 (KB)/秒為單位。

所以AG 儀表板是基於平均值的,但是在什麼時期?log_send_rate根據同一 DMV的描述中的措辭,我懷疑這是“最後一個活躍期” :

主副本實例在上次活動期間發送數據的平均速率,以千字節 (KB)/秒為單位。

讓我們試試看。我將打開一個實驗室 AG 儀表板,我注意到的第一件事是重做率不是零,儘管我已經有幾週沒有使用這個東西了:

顯示非零重做率的 AG 儀表板螢幕截圖

Perfmon 在二級市場上持平,因為我還沒有做任何事情:

Perfmon 的螢幕截圖顯示有問題的計數器為零

現在我將在我的測試數據庫中插入一些數據:

INSERT INTO dbo.A
SELECT TOP (1000)
   REPLICATE(N'A', 50)
FROM master.dbo.spt_values;

現在,輔助節點上的 Perfmon 顯示了一個短暫的現象:

Perfmon 的螢幕截圖顯示了重做率的短暫增加

如果我打開 AG 儀表板,我可以看到重做率發生了變化(從 3535 到 3873),但它並沒有回落到零:

再次顯示重做率已更改的 AG 儀表板螢幕截圖

所以看起來這個 DMV(和儀表板)只在重做實際發生時才更新,並且它保存了它計算的最後一個值。

引用自:https://dba.stackexchange.com/questions/291455