SQL Server2014 IO调控支持-20161014.docx

by 张刚 2016.12.20 11:09

注:脚本执行有风险,对于客户正式环境请在研发指导下执行。

SQL Server2014 IO调控支持-20161014

1.   概述

U9产品之前在调度服务器支持了CPU的调控功能,具体可参考附件:《转发: Job支持SQL资源调控部署方法-20131112.msg》:

SqlServer2014后资源调控增加了对IO的调控支持。因此,使用SQL2014及以后版本的客户,可通过添加新的【应用】和【WorkGoup】来支持其他调度服务运行时的资源(CPU\IO)的调控。本文档通过设置U9数据库【碎片整理】调度的CPUIO调控,来降低其CPU\IO的使用,从而避免在生产环境业务期间对服务器的资源占用。其他类似调度如此调整,可参考即可。

2.  操作步骤

1. 通过下面步骤,【系统管理工具】--【站点管理】--【数据库服务器】--双击数据库--【资源调控】--【缺省设置】, 进入到设置界面:

点【缺省设置】后,会出现U9目前已支持的CPU调控的5个节点。

2. 查询【碎片整理】调度的应用信息:

u9的数据库中,通过数据库查询分析器,执行如下sql

SELECT c.Local_ID ,l.DisplayName ,l.Description,c.FullName,c.Name,c.Discriminator FROM dbo.UBF_MD_Class_Trl l INNER JOIN UBF_MD_Class c ON l.LOCAL_id = c.LOCAL_id  WHERE l.DisplayName LIKE '%碎片%' AND l.SysMLFlag='zh-CN'

找到其对应的BP的名称:UFIDA.U9.Base.Performance.Defragmentation(其他调度相关信息同样可这样查询,对于有些不确认的名字,可咨询相关开发)

3. 在资源调控配置中,添加如下内容。U9IOIndex在第4步骤中创建。点【确认】。

注:由于默认策略的原因,WorkGroup的名字,必须以U9开头,否则相应功能不起作用。

4 .创建u9碎片整理所使用的资源池和工作负荷组

--1.创建碎片整理的的资源池

Use master

go

 

CREATE RESOURCE POOL U9IOIndex

WITH

(

     MAX_CPU_PERCENT = 20,

     MIN_CPU_PERCENT = 0,

     MAX_IOPS_PER_VOLUME = 20,

     MIN_IOPS_PER_VOLUME = 0

)

GO

--2.创建碎片整理的的工作负荷组

CREATE WORKLOAD GROUP groupU9IOIndex --group+U9IOInxdex

WITH

(

IMPORTANCE = LOW --MEDIUM

 

)

USING U9IOIndex

GO

 

--3.更新内存中的配置

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

 

--4.创建分类器函数

if object_id('dbo.fn_U9Classifier') is not null

     drop function dbo.fn_U9Classifier

go

 

create function [dbo].[fn_U9Classifier]() returns sysname

with SchemaBinding

as

begin

   declare @grpName as sysname

   declare @appName as nvarchar(128)

 

   set @appName = App_Name()

   if (left(@appName,2) = 'U9')

        set @grpName = 'group' + @appName

   else

        set @grpName = 'default'

  return @grpName

end

go

 

 

--5.注册分类器函数到资源调控器并更新内存中的配置

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fn_U9Classifier)

ALTER RESOURCE GOVERNOR RECONFIGURE

GO

 

--6.查看资源池中是否添加UseIOAAAI成功?

SELECT * FROM sys.dm_resource_governor_resource_pools

5. 以上步骤,就完成了对u9调度中的碎片整理的cpuio的资源调试设置。重启调度服务(UfApplicationService),使得配置生成。

3.  测试

1.       创建索引整理调度(大部分客户已创建了此调度,则不用创建了)。

2.       通过SQL Profiloer观察,对应的ApplicationName已变成对应的工作负荷组名字。

观察计数器,其IO最高上限为20

4.   注意事项

一般企业级级机械磁盘组成的raid,其IOPS2002000之间,由于限制IO后,其sql执行效率时由于占用IO较小,执行时间也相应会拉长,从测试来看,正常6分钟跑完的碎片整理,在IO限制在20后,30分钟未执行完成。因此对于IO的限制一般主要应用如下两类场景:

a.       数据库碎片整理

b.       数据库备份

通过对上面两类操作做IO的限制,可减少在ERP在上班业务期间其执行的IO消耗,从而减少到正常业务的影响。

 

添加评论



biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading


RecentComments

评论 RSS

Statistics

989 篇文章
0 个单页
653517 条评论
11 次评分
233793 次访问
访问统计开始于 2019年12月15日
平均日访问 5437 次
当前 98 人在线