SQL Server 2012
- 格式:docx
- 大小:548.98 KB
- 文档页数:18
SQL Server 2012 中的资源调控器SQL Server 技术文章作者:Guy Bowerman技术审校:Jim van de Erve、Lindsey Allen (ZHU)、Madhan Arumugam Ramakrishnan、Xin Jin发布时间:2012 年 7 月适用范围:SQL Server 2012摘要:SQL Server 2012 增强了资源调控器的功能,这反映了对集中管理的数据库服务的需求不断增长,以便为需要隔离工作负荷的客户提供多租户模式。
本文描述了这些增强功能以及添加这些功能的原因。
本文包含一个独立的演练,您可以尝试执行该演练以便熟悉这些新功能。
版权信息本文档按“原样”提供。
本文档中的信息和表达的观点(包括 URL 和其他 Internet 网站引用)如有更改,恕不另行通知。
您应承担使用本文档所带来的风险。
本文档不向您提供对任何 Microsoft 产品中的任何知识产权的任何法律权利。
您可以出于内部参考目的复制和使用本文档。
© 2012 Microsoft。
保留所有权利。
简介 (4)SQL Server 2012 中新的资源调控器功能 (5)为什么更改资源调控器? (5)新功能摘要 (5)示例工作负荷隔离用例 (6)第一部分–初始设置–创建用户和工作负荷 (6)第二部分–设置资源调控器 (6)第三部分–运行工作负荷 (7)第四部分–监视 (8)第五部分–争用的工作负荷 (9)最佳做法 (15)故障排除 (16)结论 (17)参考 (17)SQL Server 资源调控器是在 Microsoft SQL Server 2008 Enterprise 中引入的,用于为支持多个客户端工作负荷的单个 SQL Server 实例提供多租户模式和资源隔离。
通过资源调控器功能,您可对传入请求可使用的内存量和 CPU 资源设置限制,并且它提供一个方法来隔离和限制失控查询,添加细粒度资源跟踪以便用于退款和提供可预测的性能。
有关此功能的详细信息,请参阅 SQL Server 联机丛书中的资源调控器 (/library/bb933866.aspx)。
使用 SQL Server 2012,您可为工作负荷提供更完全的 CPU 资源隔离,对 CPU 使用量设置上限以便实现更高程度的可预测性,并且可以控制更大比例的 SQL Server 内存分配。
资源池、工作负荷组和分类SQL Server 资源调控器引入了“资源池”的概念,作为在 SQL Server 实例内实现资源隔离的基本方式。
可以通过 Transact-SQL 以及SMO之类的其他管理界面对资源池进行控制,并且可以通过CREATE RESOURCE POOL 和 ALTER RESOURCE POOL 语句向资源池分配最小和最大 CPU 以及内存资源。
SQL Server 2012 支持最多 62 个用户可定义的池,与 SQL Server 2008 中的 18 个相比大幅增加。
SQL Server 2012 还提供两个内置的资源池:一个资源池称作“内部”,它是为系统任务保留的,不可配置;另一个用户可配置的资源池称作“默认”,默认情况下在此资源池中运行工作负荷。
每个用户资源池可与一个或多个“工作负荷组”相关联,这些工作负荷组是表示一个或多个客户端工作负荷的逻辑实体。
传入会话可通过在登录后运行的用户可定义的“分类器”函数与这些工作负荷组相关联,并且可调用系统函数以便评估不同登录属性,例如用户名、工作站名称、数据库名称等。
下图显示这些组件是如何相互配合共同将传入连接划分到各资源池中的。
图 1:资源调控器会话分类有关详细信息,包括对 SQL Server 2008 和 SQL Server 2008 R2 中资源调控器功能的明确和深入说明,请参阅 Aaron Bertrand 和 Boris Baryshnikov 撰写的白皮书使用资源调控器 (/ library/ee151608.aspx)。
本文介绍了在 SQL Server 2012 中引入的新功能,论述了为什么添加这些功能,以及如何使用这些新功能。
SQL Server 2012 中新的资源调控器功能为什么更改资源调控器?随着每个插槽中 CPU 内核数目的增加以及大型计算机成本的降低,我们听到了来自使用资源调控器为其客户隔离 SQL 资源的 SQL Server 托管合作伙伴的以下意见:“在使用每个 CPU 具有 10 个和12 个内核的新型商用服务器之后,服务器上的 CPU 资源大量闲置,因为我们受制于资源池的最大数目。
”想要基于 SQL Server 向客户提供经济合算的数据库服务产品的主机托管服务提供商需要更为灵活地为工作负荷划分大型计算机上的可用资源,并且尽可能减少工作负荷彼此争用资源以及一个工作负荷对其他工作负荷使用的资源有负面影响(即所谓的“扰民的邻居”)等情况的发生。
随着计算机以及虚拟化软件性能的增强,在私有云中虚拟化和管理的 SQL Server 实例的数目和大小也在增加。
因此,向共享资源的用户提供更有效的隔离变得更加重要。
工作负荷需要在 SQL Server 实例内的分区资源上运行,以避免发生“扰民的邻居”问题。
我们还看到了另一个趋势,就是针对资源使用的退款情况的增加。
现在,越来越多的企业和公共托管提供商对内部资源的使用进行跟踪和收费,而这就需要向资源的使用者提供可预测的计费。
新功能摘要为了满足这些需要,在 SQL Server 2012 中添加了以下功能:-将资源池的最大数目从 20 增加到 64,这样就能够对更大的计算机进行分区,以便适用于更多的工作负荷。
-向资源池添加了 CAP_CPU_PERCENT 选项以便对 CPU 资源使用情况设置硬上限,从而提供更好的可预测性。
-向资源池添加了 AFFINITY 选项,允许单独的资源池关联到一个或多个计划程序和 NUMA 节点,从而提供更好的 CPU 资源隔离。
-SQL Server 内存管理器负责调控多页分配以及单页分配。
之所以这样是因为 SQL Server 2012 中进行了一个重大的设计改动,内存管理器现已成为用于页分配的中心操作系统接口。
有关内存管理器更改的详细信息,请参阅SQLOS 和云基础结构团队博客(/b/sqlosteam/)。
为了说明新的资源调控器功能的工作方式以及如何使用这些功能,我们通过下面这个简单的演示来展示实际的工作负荷隔离。
示例工作负荷隔离用例假设您托管一个私有云并且维护一个集中的数据库服务,该服务支持两个部门:销售部和市场营销部。
这两个部门有两个大量占用 CPU 的工作负荷,共享同一个数据库。
为了跟踪成本,您要跟踪每个部门使用的资源。
然后,您分别就各部门使用的 CPU 资源向各部门收费。
这两个部门都要求他们的查询具有可预测的性能。
销售部希望查询始终具有需要的资源,最好是随时独享一个 CPU 内核的 100% 使用率。
与此同时,销售部的用户必须与其他部门共享数据库实例。
另一方面,市场营销部门具有较低优先级的查询。
他们仍需要可预测的性能,但限制在固定的资源预算内。
您的工作是在此环境中提供工作负荷隔离、可预测的性能以及可预测的计费。
注意:为了阐明这些新功能,本演练重点说明了 CPU 资源。
本演练并不涉及对内存进行控制,尽管也可以使用 SQL Server 资源调控器进行内存控制。
下面的演练可通过教程的形式逐步完成。
若要自己动手演练,请首先配置具有两个 CPU 内核的计算机或虚拟机,并安装 SQL Server 2012 Enterprise、Evaluation 或 Developer。
第一部分–初始设置–创建用户和工作负荷首先,为销售和市场营销工作负荷创建用户登录名。
(假定为此实例启用了 SQL Server 混合模式身份验证实例属性。
)CREATE LOGIN Sales WITH PASSWORD='UserPwd',CHECK_POLICY=OFFCREATE LOGIN Marketing WITH PASSWORD='UserPwd',CHECK_POLICY=OFFCREATE USER Sales FOR LOGIN Sales;CREATE USER Marketing FOR LOGIN Marketing;GO此演示的第一部分展示了两个相互争用CPU 时间的工作负荷,因此,在开始使用资源调控器之前,应将 SQL Server 与单个 CPU 相关联以便所有工作负荷必须共享单个 CPU。
sp_configure'show advanced', 1GORECONFIGUREGOsp_configure'affinity mask', 1GORECONFIGUREGO第二部分–设置资源调控器SQL Server 资源调控器用于将销售工作负荷和市场营销工作负荷与单独的资源池相关联。
这样,您可以通过性能监视器单独跟踪其资源使用情况。
但是,最初并不会进行进一步的资源调控器配置;也就是说,尚没有 CPU 资源会分配给资源池,因此,用户将不会看到在使用资源调控器和未使用资源调控器之间有任何差异。
1.创建资源池。
CREATE RESOURCE POOL SalesPoolCREATE RESOURCE POOL MarketingPool2.创建工作负荷组。
CREATE WORKLOAD GROUP SalesGroupUSING SalesPoolCREATE WORKLOAD GROUP MarketingGroupUSING MarketingPoolGO3.创建在用户连接时触发的分类器函数。
该函数将基于传入用户的登录名(也就是说,该登录名是来自销售部还是市场营销部)将连接与特定的工作负荷组相关联。
CREATE FUNCTION CLASSIFIER_V1()RETURNS SYSNAME WITH SCHEMABINDINGBEGINDECLARE@val varchar(32)SET@val='default';IF'Sales'=SUSER_SNAME()SET@val='SalesGroup';ELSE IF'Marketing'=SUSER_SNAME()SET@val='MarketingGroup';RETURN@val;ENDGOALTER RESOURCE GOVERNORWITH (CLASSIFIER_FUNCTION=dbo.CLASSIFIER_V1)GO4.现在激活资源调控器。