首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2012 AlwaysOn 可用性組:主副本連接配置優化與 CPU 高負載根因分析

     編輯:關於SqlServer

問題現象

啟用 AlwaysOn 後主副本 CPU 持續高位,默認配置下「主角色中的連接」=「允許所有連接」、「可讀輔助副本」=「是」。

四大連接配置選項解析

配置項選項行為適用場景
主角色連接允許所有連接讀/寫/管理 (SSMS、sqlcmd 皆可)生產主庫 (默認)
允許讀/寫連接僅讀/寫,管理連接被拒嚴格隔離管理流量
可讀輔助副本是所有副本可讀 (SSMS 瀏覽、報表查詢)讀寫分離、報表卸載
僅讀意向需連接字符串 `ApplicationIntent=ReadOnly` 才能連接強制應用聲明只讀意圖,防誤寫
否副本不可連接 (僅作 HA 熱備)嚴格 HA、無讀寫分離需求

CPU 高負載根因與優化

  1. 可讀副本開啟 + 讀寫分離未正確路由:應用未加 `ApplicationIntent=ReadOnly`,讀請求仍打主庫
  2. 2. 副本同步延遲導致主庫阻塞:同步提交模式下,主庫等待次要副本確認 3. 幽靈記錄清理/版本存儲:可讀副本啟用 Row Versioning,主庫 tempdb 版本存儲增長 4. 自動統計更新/索引維護:主庫維護窗口與業務高峰重疊

優化建議

  • 連接字符串強制加入 `ApplicationIntent=ReadOnly`,配合「僅讀意向」模式
  • 讀寫分離層 (如 ProxySQL、HAProxy、應用級路由) 將讀流量導向副本
  • 非關鍵業務副本改為「異步提交」,降低主庫提交延遲
  • 錯開維護窗口,啟用 TF 2371 (SQL 2016+ 默認) 更積極統計更新
  • 監控 `sys.dm_hadr_availability_replica_states` 同步健康度

AlwaysOn 可用性組屬性配置界面 副本不可連接錯誤示例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved