SQL Server 2012中Task是如何调度的?[原文来自:How It Works: SQL Server 2012 Database Engine Task Scheduling]
     从SQL Server 7.0以来调度算法并没有很大的改变。
算法概述:
     调度从分配NUMA节点开始,使用循环分配的方式,当一下链接来了,先分配给Node1,然后分配给Node2,然后在Node1
     分配了NUMA节点之后,在分配调度器,根据Load factor来做调度,Load factor可以简单的认为是分配给调度器的任务数量
     task分配是根据Load factor,如果首先的调度器比其他调度器多了120%,那么选择其他调度器,否则现在首选调度器
 
SQL Server 2012调度算法只在企业版上做了修改
     新的连接分配:新的连接是用环形循环分配,和前面提到的一样。所有的sql server 2012 产品都是这样分配连接的,然后查询目标节点把连接分配给负荷最小的调度器,然后这个调度器变为这个连接的首选调度器。
     
 
     新的连接并没有首选调度器,所以需要再分配的节点内给连接分配一个调度器,负荷最小的调度器被选中,如图的例子现在了Node1的sched2.
 
SQL Server 2012之前和非企业版
     这个比较简单,当task被请求,使用首选调度器,继续上面的例子如图:是sched2,当load factor是其他调度器120%以上的时候就需要重新选中调度器。
     
 
SQL Server 2012企业版
     在企业版中,对load factor的算法进行了改进。
     每个调度器,都有一个以cpu为目标的,资源池,并是有load factor对能力进行跟踪。并不是Load factor一样120%,而是通过每个资源池的平均cpu
     
调度还是以首选调度器开始,如果调度之后,并没有比同节点内的所有调度器平均少80%,那么可以调度,否则做调度平衡,选择可用资源最多的调度器。
     调度的例子(笔者认为例子有些错误,所以做了修改):
Scheduler RG Pool Target Pool Runnable Tasks Avg Pool/Task  
1 50 10 5  
2 50 8 6.25 Currently Best Target – More resources to provide for tasks in the same pool
 
 
假设sched1 可以为每个task提供5,那么sched2可以提供6.25
当前平均是 (5+6.25)/2 = 5.625
 
当有一个任务要被分配,首选是sched1那么如果被分配,可提供 50/11 = 4.545 > 5.625*0.8 = 4.5008所以可以分配

Scheduler RG Pool Target Pool Runnable Tasks Avg Pool/Task  
1 50 11 4.545   Not below 80th percentile
2 50 8 6.25  
 
当前平均= 5.3977 (6.25 + 4.5454/2) 
然后又有一个新的要分配,首选还是sched1,50/12 = 4.1666 < (4.545+6.25)/2*0.8 = 4.3181所以需要做调整,选择自愿最多的一个调度器

Scheduler RG Pool Target Pool Runnable Tasks Avg Pool/Task  
1 50 11 4.5454  
2 50 9 5.55  Added task
 
当前平均值 5.047 (5.55 + 4.5454 / 2)
 
相关Trace Flag
     -T8008 强制调度,不管scheduler提示,总是调度给最小的负荷(使用最小load factor或者资源池)
     -T8016 忽略负载均衡,总是调度给首选调度器

SQL Server 2012中Task是如何调度的?的更多相关文章

  1. SQL Server 2012中快速插入批量数据的示例及疑惑

    SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...

  2. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project

    SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...

  3. (数据科学学习手册28)SQL server 2012中的查询语句汇总

    一.简介 数据库管理系统(DBMS)最重要的功能就是提供数据查询,即用户根据实际需求对数据进行筛选,并以特定形式进行显示.在Microsoft SQL Serve 2012 中,可以使用通用的SELE ...

  4. 在SQL Server 2012中实现CDC for Oracle

    在上篇在SSIS 2012中使用CDC(数据变更捕获)中,介绍了如何在SSIS 2012中使用CDC,本文在此基础上介绍,如何通过Attunity提供的Change Data Capture Desi ...

  5. 在SQL Server 2012中新建用户

    一.问题描述 在最开始装SQL Server 2012时我选择的是Windows身份认证方式,现在想添加一个用户采用SQL Server身份验证. 二.具体思路 1.新建用户 2.将新建的用户添加到相 ...

  6. 在SQL Server 2012中如何使用分组集

    作者:Itzik Ben-Gan  翻译:张洪举 此文摘自作者的<Microsoft SQL Server 2012 T-SQL基础>. 分组集就是你据以分组的一个属性集.传统上,SQL中 ...

  7. SQL Server 2012中的AlwaysOn尝试

      简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案.在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移 ...

  8. SQL Server 2012 中 Update FROM子句

    首先说明一下需求以及环境 创建Table1以及Table2两张表,并插入一下数据 USE AdventureWorks2012; GO IF OBJECT_ID ('dbo.Table1', 'U') ...

  9. SQL Server 2012中LEAD函数简单分析

    LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本 DECLARE @TestData TABLE( ID INT IDENTITY(1,1), Dep ...

随机推荐

  1. 高德携手阿里云发布“LBS云”,账户打通只是第一步

    位置.游戏.视频,是公认的基于云计算的三大移动端应用方向.而今,LBS云有了更多进展,在高价值应用与云平台之间实现了资源打通和融合,高德迈出了实质性的一步. 高德地图副总裁郄建军(左)与阿里云业务总经 ...

  2. Redis配置集群二(window)

    第一篇那redis的基础命令都差不多讲了一遍了,这篇就将怎么配置集群了,最后要达到的效果是一台主redis,还有几台从的redis,每次数据都是同步的,当主redis挂掉了,那么就会从几台从redis ...

  3. sublime Text-Theme

    一.Spacegray主题 1>安装Spacegray主题按下Ctrl+Shift+P,输入install,选择Package Control: Install Package,然后输入Spac ...

  4. 第 17 章 CSS 边框与背景[下]

    学习要点: 1.设置背景 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 边框和背景,通过边框和背景的样式设置,给元素增加更丰富的外观. 一.设置背景 盒模型的尺寸可以通过两种方式实现可见性, ...

  5. contentResolver

    今天练习一个联系人的增,写,改,查的几项操作,其中一个重要的知识点  ContentResolver 还有一篇不错的参考文献 主要参见下面这个链接  http://cthhqu.blog.51cto. ...

  6. inflate的基本用法,类似于findviewbyId

    Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. android上还有一个与Inflate()类 ...

  7. No.010:Regular Expression Matching

    问题: Implement regular expression matching with support for '.' and '*'.'.' Matches any single charac ...

  8. ORM实现原理

    1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的 ...

  9. /dev/random 和 /dev/urandom的一点备忘

    1.  基本介绍 /dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流.很多解密程序与安全应用程序(如SSH Keys, ...

  10. 初识Aop和扩展Aop

    一.什么叫做AOp 解析:Aop(Aspect Oriented Programming)是面向切面编程,软件编程的一种思想. OOp(Object Oriented Programming)是面向对 ...