资源调控器 DDL 和系统视图

可以使用资源调控器 DDL 命令、目录视图和动态管理视图来配置和查看资源调控器的任何方面。除了特定于资源调控器的新视图外,现有的系统视图已经过修改以包括资源调控器的相关信息。本主题概括了以下语句和视图:

  • DDL 命令,其中包括用于工作负荷组、资源池和资源调控器的命令。

  • 资源调控器系统视图,其中包括目录视图和动态管理视图。

  • 经过更新以支持资源调控器的 SQL Server 系统视图。

  • 支持资源调控器的 SQL Server 事件类更新以及新事件类。

DDL 语句

资源调控器提供了七个 DDL 命令,可用于配置资源调控器会话的任何一个方面。用于工作负荷组和资源池的命令包括 CREATE、ALTER 和 DROP 命令。此外,还有一个应用配置更改的 ALTER RESOURCE GOVERNOR RECONFIGURE 语句。

要注意的有关资源调控器 DDL 命令的重要事项如下:

  • CREATE、ALTER 和 DROP 语句用于处理存储元数据并且是事务语句。但是,完成这些语句并不能使更改生效;必须执行 ALTER RESOURCE GOVERNOR RECONFIGURE 语句来应用更改。

  • 前面的语句可以是事务的一部分,以阻止多个用户对相同配置同时执行修改。这是通过在语句中使用 BEGIN TRANSACTION 和 COMMIT TRANSACTION 来完成的。事务上的任何锁定都显示在 sys.dm_tran_locks 中,并且可以根据需要停止事务。

    注意注意

    虽然不要求,但是强烈建议在使用资源调控器 DDL 语句时使用事务语法。但是,ALTER RESOURCE GOVERNOR DISABLE、ALTER RESOURCE GOVERNOR RECONFIGURE 和 ALTER RESOURCE GOVERNOR RESET STATISTICS 不能是用户事务的一部分。

  • ALTER…RECONFIGURE 语句用于将元数据加载到内存并可能会失败。您无法回滚此语句。如果该语句失败,对元数据所做的更改将不会复制到内存。如果该语句成功,更改会生效。ALTER…RECONFIGURE 不是事务语句,并且更改不能回滚。

资源池命令

使用下表中介绍的命令可配置资源池。

DDL 语句

说明

CREATE RESOURCE POOL

创建资源池。

ALTER RESOURCE POOL

更改资源池的配置。此语句用于将更改写入已存储的配置元数据中。执行此语句后,必须执行 ALTER RESOURCE GOVERNOR 语句将元数据信息写入内存中的配置。

DROP RESOURCE POOL

删除资源池。

资源调控器提供了四个资源池配置参数。它们分别是:

  • 最小和最大 CPU 使用百分比。

  • 最小和最大内存使用百分比。

根据对资源池配置所做的更改,可能存在转换期和用于在此转换期内处理活动或等待请求的已知行为。有关详细信息,请参阅资源调控器状态

工作负荷组命令

使用下表中介绍的命令可配置工作负荷组。

DDL 命令

说明

CREATE WORKLOAD GROUP

创建一个工作负荷组并将其与资源池关联。

ALTER WORKLOAD GROUP

更改工作负荷组的配置。此语句用于将更改写入已存储的配置元数据中。执行此语句后,必须执行 ALTER RESOURCE GOVERNOR 语句将元数据信息写入内存中的配置。

DROP WORKLOAD GROUP

删除工作负荷组。

资源调控器提供了以下六个工作负荷组配置参数:

  • 请求的最大内存量。

  • 请求的最大 CPU 百分比。

  • 请求的资源超时。

  • 请求的相对重要性。

  • 工作负荷组的最大请求数。

  • 工作负荷组将位于的资源池。

根据对工作负荷组配置所做的更改,会有用于在应用更改时处理活动或等待请求的已知行为。有关详细信息,请参阅资源调控器状态

资源调控器命令

使用下表中介绍的命令可配置资源调控器。

DDL 命令

说明

ALTER RESOURCE GOVERNOR

应用使用 ALTER 命令指定的配置更改,启用或禁用 RESOURCE GOVERNOR 以及注册分类器函数或重置统计信息。

ALTER RESOURCE GOVERNOR 语句用于执行以下操作:

  • 应用在发出 ALTER WORKLOAD GROUP 或 ALTER RESOURCE POOL 语句时指定的配置更改。

  • 启用或禁用资源调控器。这也用于应用配置更改。

  • 注册请求分类函数。

  • 重置所有工作负荷组和资源池的统计信息。

根据对资源调控器配置所做的更改,会有用于在应用更改时处理活动或等待请求的已知行为。有关详细信息,请参阅资源调控器状态

资源调控器视图

下面的目录视图和动态管理视图特定于资源调控器。

目录视图

下表介绍了资源调控器目录视图。

名称

说明

sys.resource_governor_configuration

返回存储的资源调控器状态。

sys.resource_governor_resource_pools

返回已存储的资源池配置。视图的每一行都确定了一个池的配置。

sys.resource_governor_workload_groups

返回存储的工作负荷组配置。

动态管理视图

下表介绍了资源调控器动态管理视图。

名称

说明

sys.dm_resource_governor_workload_groups

返回工作负荷组统计信息和工作负荷组当前在内存中的配置。

sys.dm_resource_governor_resource_pools

返回当前资源池状态、资源池的当前配置以及资源池统计信息的相关信息。

sys.dm_resource_governor_configuration

返回一个包含资源调控器当前在内存中的配置状态的行。

SQL Server 视图

已更新若干 SQL Server 系统视图并提供有关资源调控器的信息。

动态管理视图

下表介绍了 SQL Server 动态管理视图。

名称

说明

sys.dm_exec_query_memory_grants

返回已经获得内存授予的查询的有关信息,或仍需执行内存授予的查询的有关信息。无需等待内存授予的查询将不会出现在此视图中。以下列是针对资源调控器添加的:

  • group_id

  • pool_id

  • is_small

  • ideal_memory_kb

sys.dm_exec_query_resource_semaphores

返回当前查询资源信号量的状态信息。sys.dm_exec_query_resource_semaphores 提供常规的查询执行内存状态,可用于确定系统是否可以访问足够的内存。

以下列是针对资源调控器添加的:

  • pool_id

sys.dm_exec_sessions

对于 SQL Server 中每个经过身份验证的会话都返回相应的一行。

以下列是针对资源调控器添加的:

  • group_id

sys.dm_exec_requests

返回有关在 SQL Server 中执行的每个请求的信息。

以下列是针对资源调控器添加的:

  • group_id

sys.dm_exec_cached_plans

针对 SQL Server 为了加快查询执行而缓存的每个查询计划返回一行。

以下列是针对资源调控器添加的:

  • pool_id

sys.dm_os_memory_brokers

SQL Server 的内部分配使用 SQL Server 内存管理器。

以下列是针对资源调控器添加的:

  • pool_id

  • allocations_kb_per_sec

  • predicated_allocations_kb

  • overall_limit_kb

sys.dm_os_wait_stats

返回正在执行的线程所遇到的等待数的有关信息。您可以使用该视图诊断 SQL Server 以及特定查询和批处理的性能问题。

SQL Server 事件类参考

已经更新若干 SQL Server 事件类并已添加新的事件类来支持资源调控器。

名称

说明

CPU Threshold Exceeded 事件类

此事件类指示资源调控器检测到查询超出为 REQUEST_MAX_CPU_TIME_SEC 指定的 CPU 阈值。

PreConnect:Starting 事件类

此事件类指示 LOGON 触发器或资源调控器分类器函数开始执行的时间。

PreConnect:Completed 事件类

此事件类指示 LOGON 触发器或资源调控器分类器函数结束执行的时间。