zoukankan      html  css  js  c++  java
  • SQL Server架构SQL Server的执行模式和SQLOS

    SQL Server架构----SQL Server的执行模式和SQLOS

    2013-12-31 10:00:22 burgess_liu 阅读数 1941更多

    分类专栏: SQL Server 2012的内部原理和故障排除

    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之间的关系:

     SQLOS

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

    关于SQL SERVER SQLOS的任务调度,你可以参考http://blogs.msdn.com/b/apgcdsd/archive/2011/11/24/sql-server-sqlos.aspx

      

  • 相关阅读:
    题解-CmdOI2019 口头禅
    题解-NOI2003 智破连环阵
    题解-CF1282E The Cake Is a Lie
    CF1288F Red-Blue Graph
    题解-洛谷P4229 某位歌姬的故事
    莫比乌斯反演
    [HNOI2008]越狱(bzoj1008)(组合数学+正难则反)
    [FJOI2007]轮状病毒(bzoj1002)(递推+高精度)
    矩阵快速幂
    高斯消元
  • 原文地址:https://www.cnblogs.com/grj001/p/12223848.html
Copyright © 2011-2022 走看看