>  기사  >  데이터 베이스  >  SQL server的worker thread工作线程讲解

SQL server的worker thread工作线程讲解

WBOY
WBOY원래의
2016-06-07 17:54:381380검색

我们都知道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。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.