Manager SQL Server的线程与纤程

基本概念

()线程

SQL Server 使用操作系统的线程来执行并发任务。在不使用纤程的情况下,SQL server将启动线程,并由OS将线程分配给cpu,线程管理由OS内核控制,当一个线程完成退出CPU,其他线程调度占用该CPU时,将发生一个上下文切换,这个切换是在应用程序的用户模式和线程管理的内核模式之间的切换,所以需要付出一定的代价,应当尽量避免这种切换

 

()纤程

为了减少上下文切换,引入纤程的概念,可以在SQL server中启用纤程,纤程是线程的子模块,纤程由运行在用户模式下的代码管理,所以切换纤程比切换进程的代价少的多,因为纤程模式不需要在将用户模式和内核模式中切换,而切换线程则需要这种转换。

 

()两者的区别

SQL server管理纤程的调度,而OS管理线程的调度

线程模式里 SQL server为每个并发用户创建配一个线程

纤程模式中 SQL server为每个CPU分配一个线程,并为每个并发用户创建配一个纤程,一个线程中可以有多个纤程,纤程只在线程里切换,不用上下文切换

 

 

注意:SQL Server Personal Edition Desktop Edition不支持纤程模式

      Win95,98不支持线程池

 

 

SQL Server对线程和纤程的管理

 

SQL Server既可以为用户连接维护一个线程池,也可以维护一个纤程池(如果设置了纤程模式,则系统只维护纤程池,不在是线程池) 在连接池中,线程和纤程都看作工作纤程,并可以由max worker threads 选项来设置SQL server可分配的线程或纤程的最大数目,一般采用默认值255

 

当一个语句需要SQL server执行时:

 

1)如果线程池里用空闲的线程,SQL server将为该语句分配一个线程

2)如果线程池中没有可供使用的空闲线程并且没有达到最大工作线程数量,SQL server将为该命令创建新的工作线程

3)如果到了最大线程使用数量并且没有空闲的线程,则进程必须等待其他处理完成后释放一个线程

 

配置SQL Server线程纤程

 

1)如何启用纤程模式:

企业管理器->服务器属性->处理器->使用windows nt 纤程

或者用 sp_configure lightweight pooling 设置为1

 

2)max worker threads 选项

该选项配置SQL Server进程的可用工作线程数 默认值为 255

 

改变方法:

企业管理器->服务器属性->处理器->最大工作线程

或者用 sp_configure修改max worker threads

 

3)affinity mask 选项

该选项在系统负荷过重时可以提高对称多处理器系统的性能,将线程与特定的处理器相关联,并指定SQL Server使用的处理器

 

改变方法:

企业管理器->服务器属性->处理器->处理器控制->选择一或多个将亲和力掩码组合在一起的处理器

或者用 sp_configure修改affinity mask

 

4)max degree of parallelism 选项

该选项可以限制在并行计划执行中使用的处理器数量

 

改变方法:

企业管理器->服务器属性->处理器->并行->选择执行并行查询的处理器数量

或者用 sp_configure修改max degree of parallelism

补充: 在纤程模式下不支持 OLE 自动化对象。

默认情况下,每个 SQL Server2000 实例都将优先级设置为 7,这称为正常优先级。这给 SQL Server 线程提供了足够高的优先级以获得足够的 CPU 资源,而不会对其它应用程序造成负面影响。priority boost 配置选项可用于将线程的优先级从 SQL Server 实例增加到 13,这称为高优先级。此设置给 SQL Server 线程提供了一个比大多数其它应用程序高的优先级。因此,往往是每当 SQL Server 线程准备好运行时便获得分派,而不会被其它应用程序的线程抢先。这在服务器只运行 SQL Server 实例而未运行其它应用程序时可提高性能。然而,如果在 SQL Server 内发生大量占用内存的操作,其它应用程序不大可能有足够高的优先级而抢先于 SQL Server 线程。如果正在一个计算机上运行多个 SQL Server 实例,并只为其中的某些实例打开了优先级提升时,则任何以正常优先级运行的实例性能都将受到负面影响。如果打开 priority boost 选项,服务器上的其它应用程序和组件的性能可能会降低,因此只应在严密控制的情况下使用该选项。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值