设为首页 收藏本站
查看: 968|回复: 0

[经验分享] SQL Server架构----SQL Server的执行模式和SQLOS

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 09:38:34 | 显示全部楼层 |阅读模式
SQLOS是SQL Server体系结构的核心,因此,你需要理解为何会存在它、以及SQL Server工作时它做什么。总之,SQLOS是位于SQL  Server 和 WIndows之间的用户模式层。它用来做低级操作,诸如调度、I/O完成、内存管理和资源管理。为了探究究竟这是什么意思,为何需要它,你首先要理解SQL Server的执行模式。

执行模式
当一个应用程式认证到SQL Server,它在对话的上下文中简历一条连接,这由一个session_id标识。你可以通过查询sys.dm_exec_sessions看到所有认证的对话清单。在一个对话里,当一个执行请求做出时,为了持续,SQL Server会把工作分成一个或多个任务,然后为每个任务关联一个工作者线程。每个线程可以是下面三种状态之一:
Running----处理器在一次仅能执行一件事情,当前正在处理器上执行的线程将有一个running状态。
Suspended----SQL Server有一个合作调度者,因此,正在运行的线程会屈服于处理器,在它们等待资源时变成暂停(suspended),这就是我们说的等待。
Runnable----当一个线程完成等待时,它会变成可运行状态,这就意味着它准备好了再次执行,这被称为信号等待。
如果没有可用的工作线程,并且尚未达到max worker threads,那么SQL Server会分配一个新的工作线程。如果达到最大的工作线程数,那么任务就会等待,直到一个线程变成可用,这个等待的类型是THREADPOOL。
默认的最大工作线程数是基于CPU架构和逻辑处理器的数量:
32位OS: Max Worker Threads=256 (逻辑CPU<=4)     Max Worker Threads=256 +((逻辑CPU数-4)*8)   (逻辑CPU>4)
64位OS: Max Worker Threads=512 (逻辑CPU<=4)     Max Worker Threads=512 +((逻辑CPU数-4)*16)   (逻辑CPU>4)
你也可以通过执行如下语句来获取最大工作线程数:SELECT max_workers_count FROM sys.dm_os_sys_info
用完工作线程通常是大量并发的并行执行计划引起,它甚至表明服务器的性能达到极限,你需要添加处理器。
每个工作线程需要2M(64位)或0.5M(32位)的RAM,因此,SQL Server仅仅在需要它们的时候创建线程,而不是一次性创建所有。
你可以查看SQL Server当前有多少线程:
  • SELECT count(*) FROM sys.dm_os_workers  


调度器
每个线程有个关联的调度器,调度器为处理器上它的每个线程调度时间。SQL Server的调度器数量=SQL Server用的逻辑处理器的数量+专用管理员连接(DAC)。你可以通过sys.dm_os_schedulers查看调度器的相关信息,通过SELECT cpu_count,scheduler_count,scheduler_total_count FROM SYS.dm_os_sys_info可以查看CPU数、调度数。
下图显示了对话、任务、线程、调度器与CPU之间的关系:
SouthEast.jpg

SQLOS
SQLOS产生的背景是为了整合资源,提升性能。另外,你可以通过sys.dm_os_打头的DMV来查看SQLOS的信息。对于体系结构中的各个组件,SQLOS起到支持它们的角色的作用。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22253-1-1.html 上篇帖子: SQL Server架构----查询的生命周期(下) 下篇帖子: SQL Server架构----小结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表