SQL Server 2012中Task是如何调度的?

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%,那么可以调度,否则做调度平衡,选择可用资源最多的调度器。
     调度的例子(笔者认为例子有些错误,所以做了修改):

SchedulerRG Pool TargetPool Runnable TasksAvg Pool/Task 
150105 
25086.25Currently 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所以可以分配

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

SchedulerRG Pool TargetPool Runnable TasksAvg Pool/Task 
150114.5454 
25095.55 Added task
 
当前平均值  5.047 (5.55 + 4.5454 / 2)
 
相关Trace Flag
     -T8008 强制调度,不管scheduler提示,总是调度给最小的负荷(使用最小load factor或者资源池)
     -T8016 忽略负载均衡,总是调度给首选调度器
posted on 2013-08-26 16:12  Fanr_Zh 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Amaranthus/p/3282846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 SQL Server 定时增量备份,你可以使用 SQL Server 的内置功能和组件来实现。以下是一种常见的方法: 1. 使用 SQL ServerSQL Server Agent:SQL Server Agent 是 SQL Server 的作业调度程序,可以用于定时执行备份任务。 - 在 SQL Server Management Studio (SSMS) ,展开 "SQL Server Agent" 节点。 - 右键单击 "Jobs" 节点,选择 "New Job"。 - 在 "General" 选项卡,为作业指定一个名称和描述。 - 在 "Steps" 选项卡,点击 "New" 创建一个新步骤。 - 在新步骤,选择 "Database Maintenance" 类别下的 "Backup Database Task"。 - 配置备份任务的相关选项,包括数据库、备份类型(增量)、备份文件的位置等。 - 在 "Schedules" 选项卡,配置作业的执行计划,可以选择每天、每周或每月执行,并指定具体的执行时间。 - 完成配置后,点击 "OK" 保存作业。 2. 使用 T-SQL 脚本:你也可以编写 T-SQL 脚本来实现定时增量备份。 - 打开 SQL Server Management Studio (SSMS)。 - 在查询窗口编写如下的 T-SQL 脚本: ```sql BACKUP DATABASE [YourDatabaseName] TO DISK = 'D:\YourBackupLocation\YourDatabaseName_Incremental.bak' WITH DIFFERENTIAL; ``` 请将上述脚本的 `[YourDatabaseName]` 替换为你要备份的数据库名称,`D:\YourBackupLocation\YourDatabaseName_Incremental.bak` 替换为你想要保存备份文件的路径。 - 然后,使用 SQL Server Agent 或者 Windows 计划任务来定时执行该脚本。 无论你选择使用 SQL Server Agent 还是 T-SQL 脚本,都可以根据实际需求来设置备份频率和文件存储位置。确保备份文件的保存位置是安全且容易恢复的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值