sql server 2012 数据引擎任务调度算法解析(下)
上次我们说到,sql server 2012的企业版的任务调度流程,一直到给新连接分配了scheduler,都是与以前的版本算法是一致的,只有在进行任务分配的时候,算法才有了细微的调整。
新算法的目的是尽量减小在同一NUMA节点内随机分配scheduler带来的性能影响(原来的算法也不能称为随机,因为是按负载系数进行分配的,但是由于负载系数会不确定,所以暂时将原分配算法定性为:随机~~)
我们知道,在sql server 2008版本以后,引入了Resource Governor(后文简称RG),在2012版本中,微软就将Resource Governor这个特性应用到了任务调度算法中来,这里需要注意的是,如果没有开启RG功能,那么sqlos将会把default RG设置应用到算法中。
PS:如果不知道Resource Governor是什么的同学请参考MSDN:https://msdn.microsoft.com/en-us/library/bb933866(v=sql.100).aspx
如果对RG有了解,就会知道RG是一个对资源进行分配的设置选项,它可以对CPU或内存的最大、最小可用资源进行配置。
每个scheduler也都有自己的目标资源池 ,每个SCHEDULER的资源池大小基本等于RG最大配置/scheduler总数的平均值
scheduler cpu pool=max cpu/scheduler count
图为default的RG设置

OK,下面我们开始说明一下新的算法流程:
当需要给task指派一个scheduler的时候,如果首选scheduler(preferred scheduler)在添加这个task后,不会使得当前scheduler的平均任务资源利用率下降到当前NUMA节点内平均资源利用率的80%以下,则将任务指派给首选scheduler;反之,则将任务分配给同一NUMA节点中有最多可用资源的sheduler上。
如果写成逻辑公式则是这种计算方式:
if (preferred scheduler pool target/runable task+1)>avg (sum(scheduler pool target/runable task))*0.8
preferred scheduler task+1
else
most pool resource scheduler task+1
也许这样说起来并不直观,我们用一些图例和计算说明一下具体流程
依然模拟了这样一个环境:2NUMA,四核,1433端口绑定到NUMA0,使用默认的RG设置(也就是MAX CPU=100%)

我们可以列出下表

全局的平均值则=(5.56+4.55)/2=5.05,那么80%数据值为5.05*0.8=4.04
1.
在sche1发起了一个任务分配的任务,计算公式则如下
scheduler1 avg = 50/(11+1)=4.17
我们发现4.17这个数值要高于全局平均使用率的80%(4.04),那么这个任务还是会分配给首选scheduler,也就是sche1
(这里注意:如果按以前版本负载系数的算法,则是(11+1)/9=1.33,在sche1添加这个任务,任务负载会超出sch0的20%以上,则此任务则会分配给sche0)
2.
上面的表格变为如下:

全局的平均值则=(5.56+4.17)/2=4.86,那么80%数据值为4.86*0.8=3.89
3.
接下来我们再继续在sche1上添加新的任务,计算公式则如下
scheduler1 avg = 50/(12+1)=3.85<3.89
则新的任务会分配到非首选schduler上,也就是sche0上,表格变成

我们可以看出,通过新的算法,并没有对不同的scheduler上的任务造成过大的数量差距,而且减小了在不同scheduler上切换任务的次数
以上就是sql server 2012任务调度算法的一些基本内容
补充
在服务器启动时候,我们可以使用2个trace flag进行调度算法的指定,当然和一般的trace flag一样,如果不是特别需要且经验非常丰富的DBA,不要对这些看似高大上的参数进行调整
-T8008 - 使用2012企业版之前的调度算法,也就是我在第一篇中写到的算法
-T8016 - 强制指派任务到首选scheduler上(基本上等于不进行什么算法判断了)
sql server 2012 数据引擎任务调度算法解析(下)的更多相关文章
- sql server 2012 数据引擎任务调度算法解析(上)
微软在sql server 2012版本之后,引入了新的任务调度算法,这个算法与之前的版本有一些细微的差别.我在这里试着简单描述一下,一些基本概念就不再赘述了,比如NUMA.scheduler.wor ...
- SQL Server 2012数据导入SQL Server 2008
SQL Server 2012可以降级到2008吗?没有找到方法,似乎也不支持.整理了一个变通的方法,把2012的数据和结构导出,然后再导入2008. 在 SQL Server 2012 使用 Sql ...
- Azure 云平台用 SQOOP 将 SQL server 2012 数据表导入 HIVE / HBASE
My name is Farooq and I am with HDinsight support team here at Microsoft. In this blog I will try to ...
- SQL Server 2012 - 数据表的操作
unicode:双字节编码 variable:可变的 character:字符 T-SQL: Transact Structured Query Language unique:唯 ...
- SQL Server 2012 读写分离设置
SQL Server 2012 读写分离设置 - AlsoIn 时间 2014-07-21 17:38:00 博客园-所有随笔区 原文 http://www.cnblogs.com/also/p/ ...
- SQL Server 2012 管理新特性:AlwaysOn 可用性组
SQL Server 2012 新特性(一)管理新特性:AlwaysOn 一.准备环境 1.准备4台计算机 域控制器DC1,IP地址192.168.1.1 主节点SQL1:IP地址192.168.1. ...
- Sql Server 2012 集群配置
基于Windows Server 2008 R2的WSFC实现SQL Server 2012高可用性组(AlwaysOn Group) 2012年5月 微软新一代数据库产品SQL Server 201 ...
- SQL Server 2012 读写分离设置 - AlsoIn
原文转至:http://www.tuicool.com/articles/a6rmiam/ 引用: http://technet.microsoft.com/zh-cn/library/jj16176 ...
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB&qu ...
随机推荐
- 4年,如何从草根成长成为CTO-(第一篇)
茫然的求索 那一年,刚好经济危机,毕业了.经过了很长时间的“网上海投”而杳无音讯之后,终于发现“经济危机真的和自己有点关系了” ,曾经以为经济危机和自己巴刚子打不着. 拿着简历,开始到处去跑招聘市场, ...
- Castle.ActiveRecord多数据库配置
最近使用Castle.ActiveRecord框架,网上关于多数据支持的文章很少,因此有了这篇博文的产生. 开发工具VS2015,Sql Server2008R2 新建数据库,数据初始化脚本如下: - ...
- DataSet转化为实体集合类
/// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...
- 动态加载js和css
开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法. 1.动态加载js 方法一:动态加载js文件 // 动态加载js脚本文件 function loadScript(url) { v ...
- Apache Lucene学习笔记
Hadoop概述 Apache lucene: 全球第一个开源的全文检索引擎工具包 完整的查询引擎和搜索引擎 部分文本分析引擎 开发人员在此基础建立完整的全文检索引擎 以下为转载:http://www ...
- [moka同学收藏]网页上的“返回上一页”的几种实现代码
我们在制作网页的时候,经常在网页上要用到"返回上一页"的功能.这一功能在制作网页的时候会有多种编码方法,在此,笔者将比较常用的几种编码写作方法在下面列出来,供各位技术人员参考使用. ...
- hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
原文地址:http://blog.csdn.net/qiaqia609/article/details/9456489 hibernate.cfg.xml -标准的XML文件的起始行,version= ...
- java.lang.Exception: Could not determine the type of file "smb://zhangsan:123456@10.77.44.222/o/mmfiles_2016/40094/25556/2130.avi".
1. 使用smb协议上传文件 报上述错误 2. 解决方法 开启administrator超级管理员 smb地址改为smb://administrator:123456@10.10.10.10/o/.. ...
- JAVA理解逻辑程序的书上全部重要的习题
今天随便翻翻看以前学过JAVA理解逻辑程序的书上全部练习,为了一些刚学的学弟学妹,所以呢就把这些作为共享了. 希望对初学的学弟学妹有所帮助! 例子:升级“我行我素购物管理系统”,实现购物结算功能 代码 ...
- jquery.zclip轻量级复制失效问题
工作原理 利用一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就可以使用 Flash 的复制功能了 <script src="js/jquer ...