Sql-Server-2019

SQL Server AG 工作執行緒

  • February 23, 2021

因此,我目前正試圖圍繞可用性組的工作執行緒,更具體地說,每個輔助數據庫使用的執行緒數。我讀到的資訊與我看到的不同。例如:

我正在使用 sys.dm_hadr_db_threads 和 sys.dm_hadr_ag_threads DMV。

“每個輔助副本對每個輔助數據庫使用 1 個重做執行緒” - 但我的輔助副本數據庫使用 3 個或 4 個執行緒:

次要副本執行緒

這是一個非常不活動的 AG,所以我不希望看到任何活動執行緒(再次從我讀過的內容來看,大約 15 秒後,執行緒被釋放以供重用)我沒有看到任何活動執行緒主要的,這是我所期望的:

主副本執行緒

這還沒有引起問題,只是我很好奇。我是否誤解了它的工作原理?我只是不希望它過度消耗執行緒,因為最終會有大量數據庫添加到 AG 中,我只是想弄清楚我們是否有足夠的工作執行緒用於 AG 和每日數據庫使用情況。

配置:

SQL Server 2019 1 AG 1 主要 1 次要

因此,我相信您閱讀的內容是與 SQL Server 2012 一起發布的第一個版本的可用性組特別相關的過時資訊。我發現我猜測的是 2014 年編寫的RedGate 文章,其中提到了引用“每個輔助副本使用每個輔助數據庫有 1 個重做執行緒”。這被稱為串列重做模型

RedGate 文章引用的來自 Microsoft 的源文章已經更新(在 2020 年),不再說明次要副本的工作方式。

此外,我還發現了以下Microsoft 文章,其中提到了從 SQL Server 2014 開始,預設情況下他們如何切換到每個數據庫的多個並行重做工作執行緒,即並行重做模型。這一定是您所經歷的。

當可用性組最初與 SQL Server 2012 一起發佈時,事務日誌重做由 AG 輔助副本中的每個數據庫的單個重做執行緒處理。這種重做模型也稱為串列重做。在 SQL Server 2016 中,重做模型得到了增強,每個數據庫有多個並行重做工作執行緒來共享重做工作負載。

這是一個可能不經常調整的功能,因此我個人建議您保持原樣,直到遇到您確定與並行重做模型相關的問題。如果您確實遇到問題,則可以切換回原始串列重做模型,如上述文章所述:

要切換到串列重做模型,需要啟用 TF 3459。但是在 SQL Server 實例以串列重做模型執行後,將其更改回並行重做的唯一方法是重新啟動 SQL Server 服務。

順便說一句,很好的問題。:)

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