SQL server的worker thread工作線程講解

我們都知道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’

結果:

SQL server的worker thread工作線程講解

一般情況下,max worker threads的缺省值是0,表示SQL Server 就能夠根據用戶請求自動確定正確的活動工作線程數。這時候sp_configure 不會告訴你現在的 max worker threads的數目:

exec sp_configure‘max worker threads’

結果:

SQL server的worker thread工作線程講解

你會注意到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

結果如下:

SQL server的worker thread工作線程講解

該DMV還輸出一個比較有意思的column就是 hyperthread_ratio. 它表示一個物理處理器包公開的邏輯內核數與物理內核數的比,而并不能告訴您是否啟用了hyperthread 模式。我上面的結果表示一個物理CPU socket 包含了4個CPU。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享