我們都知道SQL server的worker thread是SQL server 用來執行task的工作線程。Worker threads 的數目缺省是SQL server 動態創建的,需要多少就會創建多少,直到到達max worker threads的上限。如果你想改變缺省的worker threads,那么可以使用下面的腳步修改
我們都知道sql server的worker thread是sql server 用來執行task的工作線程。worker threads 的數目缺省是sql server 動態創建的,需要多少就會創建多少,直到到達“max worker threads”的上限。如果你想改變缺省的worker threads,那么可以使用下面的腳步修改:
exec sp_configure‘show advance’,1
go
reconfigure with override
go
exec sp_configure‘max worker threads’,500
go
reconfigure with override
重新啟動SQL Server 服務,然后運行,你就會發現SQL server的 max worker threads 參數已經生效:
exec sp_configure‘max worker threads’
結果:
一般情況下,max worker threads的缺省值是0,表示SQL Server 就能夠根據用戶請求自動確定正確的活動工作線程數。這時候sp_configure 不會告訴你現在的 max worker threads的數目:
exec sp_configure‘max worker threads’
結果:
你會注意到config_value 和 run_value都是0。那么如何得知SQL server 決定的那個 max worker threads是多少呢?答案就是察看DMV sys.dm_os_sys_info:
select max_workers_count,scheduler_count,cpu_count,hyperthread_ratio from sys.dm_os_sys_info
結果如下:
該DMV還輸出一個比較有意思的column就是 hyperthread_ratio. 它表示一個物理處理器包公開的邏輯內核數與物理內核數的比,而并不能告訴您是否啟用了hyperthread 模式。我上面的結果表示一個物理CPU socket 包含了4個CPU。