SQL SERVER Resource Governor 自己翻译的白皮书(部分)

来源:互联网 发布:linux下gdb调试 编辑:程序博客网 时间:2024/04/25 14:57

正在研究 SQL SERVER 2008 R2的 Resource Governor 查看了白皮书,自己翻译了部分,Share 一下,如果有什么不对的地方,还请指教。

 

什么是资源管理

 

资源管理是一种在数据库引擎上允许你去控制CPU 和 内存的技术,同时它在多聚集层次或独立的需求层次上起到控制作用。

 

你能认识到的控制上的限制类似汽车上的控制芯片,可以切断引擎上的电力,当一个硬件解码器的速度被厂商限制。这项意图阻止系统过速,而这种动机也背后也是明显也是安全的。所以其主要的目标是组织目标需求过度的利用资源,同时你可以设置最大的需求以及最小的需求。你也可以利用它来观察资源利用率,记录结果,是他们发出最大有效输出。


这里有三个基础架构,对于资源管理,资源池,工作负载,分类系统。

 

简要的说,资源池能够将CPU 和内存的通过片的方式来进行分配,工作负载则是一组需求的设置,分类参数将进来的请求分类输出到对应的资源池。

 

资源被资源管理所控制,当有重要的资源竞争时则它的优势就体现出来了。

 

 

 

为什么要用?

 

巩固

 

现在的SQL SERVER 不再像前些年,当资源不够就开始新建SERVER,最后的结果就是没有有效利用资源,以及大量承担不平衡资源的服务器。

 

资源管理则可以提供一种检测你CPU和内存以及确认你的工作负载不被过度消耗。

 

预期的性能以及阻止无度的查询

 

今天的数据库管理员更多的响应在性能的问题,类似一个会话使用太多的资源或者另一个线程没有得到足够的资源,你就只能去KILL PID 了或者应用所有的资源都在INSTANCE这个层面被垄断了。

 

资源管理可以通过组来划分CPUMEMORY 的界限,来分配预期的资源或组织脱缰的野马。

 

 

SLA 服务等级规定

 

大型的服务商都有SLA,而SQL SERVER 在一个INSTANCE里面有N多个数据库,每个数据库都在申请资源,那保证付钱多的用户的资源不被那些穷人占用,则资源管理则就是这个势利眼,他可以保证90%的资源被一个数据库占用而10%的资源服务于30个数据库,以前则这是不可能的,我们只能在建服务器,给付钱多的数据库换个家。

 

创建存储资源池

 

当存储资源池被建立,几个概念你需要

 

1 最小CPU百分比

 

当你应用了最小的CPU 设定对于一个池,那这个池的资源在被使用的时候这里也与其他的池进行CPU的资源竞争。确认他们收集这些资源的计划时间这里不保证对一个单一的CPU带宽的请求,资源管理最大的好处是使用最有效的平衡机制来对活动的线程进行管理,

 

2 最大CPU百分比

 

 当你应用一个最大的CPU设置在一个资源池中,可以一说当多个请求在这个池正在竞争资源并且确认他们不会获得超过计划时间,最大的值必须介于最小CPU百分比和100之间。

 

这里有个列表可以查看到有效的最大资源以及共享的资源

 

资源池

最小百分

最大百分

有效最大百分

共享百分

自定义

0

100

100-20-50-5=25

25-0

A

20

100

100-50-5=45

45-20

B

50

70

100-20-5=70

70-50

c

5

100

100-20-50=30

30-5

 

 

 

什么是工作组

 

你可能认为一个工作组就像一个容器为了查询或者任务,目的是将组里面的任务指向一个资源池。原因是一个资源池可以控制你的CPU和内存并添加一层对你的工作组允许你去田间其他的控制对不同的需求,同样可以跨过实例这个层次,举个例子,你可能有一个资源池对于工程人员,但你也可能创建了一个工作组对于测试和质量部门等这些普通的部门,他们没有注意占用了太多的资源,或者对你的老板老说他的查询应该快过期他的副总。

 

所以这样一个资源池可以定义两个工作负载组,通过你能有的几个组的关系来共享一个资源池,如果没有设定,那工作组将被关联到自定义资源池,你可能有一个无限制数量的工作组,但将管理上带来复杂性。

 

在工作组这个特性上将有几个设置

1 重要性

  重要性就像优先级,重要性又不是传统意义上的重要性的意味,简单的来说有关重要性他是允许计划着去平衡工作通过计划着个体的需求,其中有低,中,高等几个值,自定义的值为为中。

 

每个重要性代表的 低是1 中是3 高是9

 

2 MAX_DOP

 

   MAX_DOP是设置有关最大的并行度允许查询使用,最小值为1

 

3 REQUEST_MEMORY_GRANT_TIMEOUT_SEC

   

   这个特性是设置一个一个查询可以等待被获得内存的超时时间当超时发生将会引起一个错误。

 

 

分类函数

 

这个函数有效的一个胶合剂,用来将任务与工作组进行连接,这里主要的参数有,host_name, app_name,connectionproperty,loginprorerty, is_member

当资源管理被启用的时候,所有的用户的请求必须要通过分类函数,除非没有费雷函数的联系,所有的用户时间将直接进入到默认的工作组中。

 

一些查询的命令

 

select * from sys.dm_resource_governor_configuration

 

select * from sys.dm_resource_governor_resource_pools

 

select * from sys.dm_resource_governor_workload_groups

 

 

原创粉丝点击