使用英语阅读

通过


资源调控器

适用于:SQL ServerAzure SQL 托管实例

可以使用资源调控器来管理数据库引擎资源消耗,并强制实施用户工作负荷的策略。 利用资源调控器,可以保留或限制用户查询工作负载可以使用的 CPU、内存和物理 I/O 量。 还可以修改每个查询的资源消耗行为,例如并行度或内存授予的大小。

有关配置和监视示例以及了解资源调控器最佳做法,请参阅 教程:资源调控器配置示例和最佳做法

备注

虽然 azure SQL 数据库 利用资源调控器(以及其他技术)来管理资源,但不支持 Azure SQL 数据库中的资源池和工作负荷组的用户配置。

Azure Synapse Analytics 通过 工作负荷分类功能对类似的资源治理行为有不同的实现。

资源调控器的优点

利用资源管理器,您可以通过为请求指定资源消耗的预留和限制,来管理数据库引擎的工作负荷和资源。 在资源调控器上下文中,工作负荷是一组可以且应被视为单个实体的查询(请求)。 例如,某些应用程序执行的所有查询都可能被视为工作负荷。 虽然这不是一项要求,但工作负荷的资源使用模式越统一,可能从资源调控器派生的好处就越大。

如果同一服务器上存在多个不同的工作负荷,资源调控器允许根据指定的限制以不同的方式将资源分配给不同的工作负荷。

资源调控器支持的一些使用方案包括:

  • 在服务于多个客户端工作负荷的单个 SQL Server 实例上提供多租户和资源隔离。 也就是说,您可以将某个服务器上的可用资源划分到多个工作负荷上,并且尽量减少在工作负荷争用资源时可能发生的问题。
  • 提供可预测性能并且在多工作负载和多用户环境中支持针对工作负载的 SLA。
  • 隔离并限制过度运行的查询,或限制 I/O 密集型操作的 I/O 资源,这些操作可能会使 I/O 子系统饱和,并对其他工作负载产生负面影响。
  • 为资源使用状况退款添加细粒度资源跟踪,并且对服务器资源的使用者提供可预测的计费。

Resource Governor 限制

资源调控器具有以下限制:

  • 资源管理仅限于 SQL Server 数据库引擎。 资源调控器不能用于分析服务、集成服务和报表服务。
  • 资源调控器不提供跨多个 SQL Server 实例的工作负荷监视或工作负荷管理。
  • 非常短的查询(例如某些 OLTP 工作负载中的查询)可能没有足够的 CPU 时间来应用 CPU 带宽控制。 这可能会扭曲 CPU 使用率统计信息,并限制 CPU 资源治理的有效性。
  • 管理物理 I/O 的功能仅适用于用户操作,不适用于系统任务。 系统任务执行事务日志、检查点和延迟编写器 I/O。 Resource Governor 控制用户物理读取 I/O,但不控制由系统任务执行的写入 I/O。
  • 无法修改 internal 资源池和工作负荷组的资源调控控件。
  • Resource Governor 在实例级别运行。 具有包含的可用性组的 Resource Governor 不适用。

资源概念

以下三个概念是了解和使用资源调控器的基础:

  • 资源池。 资源池表示服务器物理资源的容器,例如 CPU、内存和 I/O。 始终存在两个内置资源池,internaldefault。 资源调控器还支持用户定义的资源池。 根据配置,资源池中的资源可以与其他池共享或保留。 有关详细信息,请参阅 Resource Governor 资源池
  • 工作负载组。 工作负载组表示以相同方式分类的会话的容器。 工作负荷组允许对会话和请求资源消耗进行聚合监视,并定义请求策略。 每个工作负荷组都处于一个资源池中。 两个内置工作负荷组(internaldefault)始终存在,并分别映射到 internaldefault 资源池。 资源调控器还支持用户定义的工作负荷组。 有关详细信息,请参阅 资源调控器工作负荷组
  • 分类。 分类过程使用自定义分类逻辑根据会话的属性(例如登录名或程序名称)将传入会话分配给工作负荷组。 将会话分类为工作负荷组后,在该会话上执行的所有请求都受工作负荷组策略的约束。 可以通过编写一个名为分类器函数的标量用户定义函数来定义分类逻辑。 有关详细信息,请参阅 资源调控器分类器函数

备注

资源调控器不会对 专用管理员连接(DAC)施加任何控制。 DAC 查询始终在 internal 工作负荷组和资源池中运行。

下图显示了资源调控器组件及其在数据库引擎中彼此之间的关系。 从处理的角度,简化的流程如下所示:

  • 会话(会话 1(共 n 个))有一个传入连接。
  • 会话是保密的。
  • 根据分类结果,会话将分配给工作负荷组,例如 Group 4
  • 工作负荷组对所有请求强制实施其策略,并使用与它关联的资源池,例如,Pool 2
  • 资源池提供和限制应用程序所需的资源,例如,Application 3

显示资源管理器组件以及传入会话处理的图表。

Resource Governor 任务

任务说明 文章
查看配置示例 资源调控器配置示例和最佳做法
启用资源调控器 启用资源调控器
禁用 Resource Governor 禁用 Resource Governor
创建、更改和删除资源池 Resource Governor 资源池
创建、更改、移动和删除工作负荷组 资源管理器工作负荷组
创建和测试分类器用户定义函数 资源调控器分类器函数
使用模板配置资源调控器 使用模板 配置资源调控器
查看资源调控器属性 查看和修改资源调控器属性