SQL 伺服器。讀取可用性組中的只讀副本是否會觸發主節點上的自動更新統計資訊?
我們有 MS SQL Server 2014 企業版,其可用性組具有可讀輔助。我們的應用程序僅從 Secondary 讀取數據。
據我所知,自動更新統計資訊在執行讀取(SELECT 和其他可能)時開始。但是我們的讀取只在輔助節點上執行。它會在主節點上觸發自動更新統計資訊嗎?
提前致謝。
PS 請原諒我糟糕的英語。
據我所知,自動更新統計資訊在執行讀取(SELECT 和其他可能)時開始。但是我們的讀取只在輔助節點上執行。它會在主節點上觸發自動更新統計資訊嗎?
不,它不會在主節點上觸發任何自動更新統計資訊。
然而
在只讀數據庫中,可以利用正常的永久統計資訊來滿足查詢計劃。如果 sql server 需要只讀數據庫的新統計資訊,或者數據庫中的這些永久統計資訊已經過時,則可以創建/更新臨時統計資訊。這些統計資訊駐留在 TempDB 中並由 SQL Server 管理(您只能刪除它們)。
有兩種臨時統計資訊,一種是由於缺少統計資訊而創建的,另一種是“更新”的。
減少臨時統計的創建
可以通過在主數據庫上手動添加統計資訊、生成報告查詢的估計執行計劃(也在主實例/數據庫上)或執行查詢來刪除臨時統計資訊的創建。
減少永久到臨時統計數據的更新
永久統計資訊可以更新並“轉換”為只讀數據庫上的臨時統計資訊。
可以通過更頻繁地更新主數據庫上的統計資訊來解決臨時統計資訊更新問題。
附帶說明一下,在
Standby / Read Only
(日誌傳送)數據庫上,您可以選擇執行ALTER DATABASE [ReadOnly] SET AUTO_UPDATE_STATISTICS OFF;
以禁用臨時統計更新。這對於 Always On 可用性組的數據庫部分是不可能的。根據數據量和採樣率,這些統計數據創建/更新可能會變得昂貴。
這個答案的部分內容來自我以前的文章