確定正確的SQL Server配置設置
介紹下列配置設置以及使用時應注意的事項: • 相似性掩碼 • 輕量池 • 最大異步 IO • 最大輔助線程數量 • 內存 • 優先級提升 • 設置工作集大小
SQL Server 只需進行很少的配置調整,就能獲得非常高級的性能。可以通過使用良好的應用程序和數據庫設計而不是通過大量的配置調整來獲得高級性能。有關如何解決 SQL Server 的各種性能問題的信息,請參閱本文的“參考”部分。
處理性能問題時,通過調整配置獲得的改善程度通常不太大,除非當前沒有正確配置系統。在 SQL Server 7.0 版及更高版本中,SQL Server 使用自動配置調整,并且配置設置(尤其是高級設置)極少需要更改。一般情況下,當沒有難以抗拒的理由以及沒有仔細進行系統化測試以驗證更改配置的必要性時,請不要更改 SQL Server 配置。在更改配置前,必須建立一個基準,以便可以衡量更改后的好處。
如果 SQL Server 配置不正確,一些設置可能會降低服務器的穩定性,或者可能會致使 SQL Server 的行為不正常。對許多不同環境的多年支持經驗表明,非默認配置設置的結果可能介于中性到非常消極之間。
如果確實更改了配置,必須在更改前后都執行嚴格的系統化性能測試以評估改善程度。
根據實際的支持方案,SQL Server 7.0 版或更高版本無需進行任何手動配置調整,就能獲得極其高級的性能。
在 SQL Server 7.0 和更高版本中,默認情況下,SQL Server 會動態調整用戶連接、鎖和打開對象設置,所以不要對這些設置進行任何配置更改。
相似性掩碼
相似性掩碼設置指將線程綁定到特定 CPU 的牢固程度。默認情況下,Microsoft Windows NT 和 Microsoft Windows 2000 使用“軟”相似性,這種相似性會試圖在上次執行線程的 CPU 上重新調度該線程。但是,如果此操作無法實現,線程可能會在其他 CPU 上運行。
在實際情況中,如果更改了相似性掩碼設置的默認值,則很少能夠改進性能,并且經常會使性能降低。
相似性掩碼將 SQL Server 限制到可用 CPU 的一個子集,并且允許其他競爭性服務更好地訪問 CPU。多數情況下,因為 SQL Server 以普通優先級運行,所以不必進行此操作。Windows NT 或 Windows 2000 線程計劃程序動態調整所有競爭性線程的線程優先級,以確保它們在所有可用 CPU 中具有平等的機會。
除了非常特殊的情況以外,請不要調整相似性掩碼。如果確實要選擇調整相似性掩碼,請在更改前后執行嚴格的系統化測試,以驗證進行改進的必要性以及改進的程度。
輕量池
默認情況下,SQL Server 對每個活動 SPID 或用戶進程使用一個線程。這些線程以匯集配置方式運行,以使線程數量可以管理。高級配置選項“輕量池”(有時稱為“纖程模式”)使用 Windows NT“纖程”支持,基本上通過單個線程來處理多個執行上下文。
根據實際生產經驗,除極少數情況以外,不必使用纖程模式。只有在滿足下列所有條件時,輕量池才可能有用。您必須通過仔細的受控測試來確定它是否實際有用。• 正在使用大型多處理器服務器。
• 所有服務器都在以最大容量或接近最大容量的狀態運行。
• 發生了許多上下文切換(每秒鐘 20,000 次以上)。
要查找上下文切換,請使用性能監視器,選擇計數器線程,選擇對象 Context switches/sec",然后選擇捕獲所有 SQL Server 實例。 如果以纖程模式運行服務器,則 SQL Server 2000 中的 SQL Mail 不受支持。
最大異步 IO
SQL Server 7.0:SQL Server 7.0 中提供了最大異步 IO 配置設置。如果您的 RAID 系統速度較快并且您有辦法衡量好處,則更改此設置可能是適當的。除非您具有基準以便衡量結果,否則請不要更改此設置。請監視磁盤活動并查找所有磁盤隊列問題。有關其他信息,請參閱下列 SQL Server 聯機圖書主題:
• “最大異步 IO 選項”
• “監視磁盤活動”
• “確定瓶頸”
SQL Server 2000:在 SQL Server 2000 中,無法更改最大異步 IO 配置設置。SQL Server 2000 會自動調整此設置。
最大輔助線程數量
默認情況下,最大輔助線程數量設置為 255,這樣最多可以創建 255 個輔助線程。多數情況下,請使用默認設置 255。這并不表示您只能建立 255 個用戶連接。一個系統可以具有成千上萬個用戶連接(按其本質多路復用到 255 個輔助線程),并且一般而言,用戶通常感覺不到任何延遲。在這種情況下,只可同時運行 255 個查詢,但這會多路復用到可用 CPU 的數量,因此,無論所配置的輔助線程數量為多少,都可以感覺到并發特性。
如果將輔助線程的數量配置為大于默認值,則由于調度和資源開銷問題,幾乎始終都會起相反的作用并且會降低性能。只有在非常特殊的情況下,并且當嚴格的系統化測試表明增加此設置會有所幫助時,才應該這樣做。
內存
有關如何配置內存的信息,請參閱 SQL Server 聯機圖書主題“使用內存配置選項優化服務器性能”。
有關如何為群集 SQL Server 配置內存的詳細信息,請參閱 SQL Server 聯機圖書主題“創建故障轉移群集”中的“使用注意事項”。
優先級提升
默認情況下,優先級提升設置為 0,這樣,無論您是在單處理器計算機還是對稱的多處理器 (SMP) 計算機上運行 SQL Server,SQL Server 都會以普通優先級運行。如果將優先級提升設置為 1,SQL Server 進程將以較高的優先級運行。此設置不會使 SQL Server 進程以最高的操作系統優先級運行。
根據實際的支持經驗,您不必使用優先級提升來獲取較佳的性能。如果您確實使用優先級提升,在某些情況下,可能會干擾服務器的正常運行。因此,除了非常特殊的情況以外,您不應使用它。例如,“Microsoft 產品支持服務”可能會在調查性能問題時使用優先級提升。
重要說明:對于正在運行 SQL Server 的群集服務器,請不要使用優先級提升。
設置工作集大小
不要更改設置工作集大小的默認設置。使用默認值 0,Windows NT 或 Windows 2000 虛擬內存管理器可以確定 SQL Server 的工作集大小。安裝 SQL Server 時,安裝程序會自動指示 Windows NT 或 Windows 2000 優化網絡應用程序的性能。因此,Windows NT 或 Windows 2000 虛擬內存管理器進行極少的工作集剪裁,從而使得對 SQL Server 實例工作集造成的干擾最少。
更改此設置通常不會帶來任何性能方面的好處。根據實際的支持案例,更改此設置帶來的損害通常比帶來的好處多。
如果更改設置工作集大小,還可能會導致 SQL Server 出現錯誤消息 844 或 845。
關鍵字:SQL Server、數據庫、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解