SQL SERVER线程和纤程的区别
创始人
2024-07-17 08:20:50
0

SQL SERVER线程和纤程都是非常重要的,下面就为将为您分析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同步复制的实现方法

SQL Server的并发控制介绍

深入解析SQL Server动态管理对象

SQL Server管理工具的升级方法

SQL SERVER连接DB2数据库

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...