SQLSERVER线程和纤程的区别

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数据库

本文标题:SQLSERVER线程和纤程的区别
路径分享:http://www.gawzjz.com/qtweb/news23/175673.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联