max worker threads 選項
更新: 2005 年 12 月 5 日
使用 max worker threads 選項,可以設定 Microsoft SQL Server 處理序可使用的工作者執行緒數目。SQL Server 使用 Microsoft Windows 2000 與 Windows Server 2003 作業系統的原生執行緒服務,因此會有一或多個執行緒同時支援 SQL Server 所支援的每個網路、並且由另一個執行緒負責處理資料庫檢查點,至於所有使用者則由一個執行緒集區負責處理。
max worker threads 選項的用途
當大量用戶端連接到伺服器時,執行緒集區有助於最佳化效能。通常,每個用戶端連接都會個別建立一個作業系統執行緒,以降低系統資源的耗用量。然而,在數以百計的伺服器連接之下,若每個連接都使用一個執行緒,反而會耗用大量的系統資源。max worker threads 選項可讓 SQL Server 建立工作者執行緒集區,以服務更多的用戶端連接,進而改善效能。
計算 max worker threads
max worker threads 的預設值為 0,可讓 SQL Server 在啟動時自動設定工作者執行緒的數目。此設定對大部份系統來說都是最適合的,但仍需視系統組態而定,有時候將 max worker threads 設為特定的值可改善效能。
下表顯示為 SQL Server 的不同 CPU 和版本組合自動設定的最大工作者執行緒數。
CPU 數 | 32 位元電腦 | 64 位元電腦 |
---|---|---|
<= 4 個處理器 |
256 |
512 |
8 個處理器 |
288 |
576 |
16 個處理器 |
352 |
704 |
32 個處理器 |
480 |
960 |
附註: |
---|
我們建議以 1024 作為 32 位元 SQL Server 的最大值,以 2048 作為 64 位元 SQL Server 的最大值。 |
當實際的使用者連接數小於 max worker threads 的設定值時,每一個連接就由一個執行緒處理。然而,當實際的連接數超過 max worker threads 的設定值時,SQL Server 就會將工作者執行緒納入集區中,讓下一個可用的工作者執行緒來處理要求。
從 SQL Server 2000 升級
SQL Server 2000 中的 max worker threads 的預設值是 255。將 SQL Server 2000 Database Engine 的執行個體升級到 SQL Server 2005 將保留 max worker threads 的組態值。升級時,我們建議將 SQL Server 2005 max worker threads 值變更為 0,讓 Database Engine 能夠計算最佳執行緒數目。
設定 max worker threads
max worker threads 屬於進階選項。若使用 sp_configure
系統預存程序來變更設定,只有當 show advanced options 設為 1 時,才可以變更 max worker threads。接著必須重新啟動系統,新的設定才會生效。
附註: |
---|
當所有的工作者執行緒都在進行長時間執行的查詢時,SQL Server 可能會反應遲緩,直到工作者執行緒完成並恢復為可用狀態為止。雖然這不算是瑕疵,但有時卻讓人困擾。若處理序反應遲緩,而且無法處理新查詢,請使用專用管理員連接 (DAC) 來連接 SQL Server,然後清除處理序。若要防止此問題,請增加工作者執行緒的最大數目。 |
請參閱
工作
如何:利用 SQL Server Management Studio 使用專用管理員連接
概念
其他資源
RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2005 年 12 月 5 日 |
|