Analytics Platform System 中的工作负荷管理

SQL Server PDW 的工作负荷管理功能允许用户和管理员将请求分配给内存和并发的预设置配置。 使用工作负荷管理,通过允许请求具有适当的资源,而不会永远耗尽任何请求,从而提高工作负荷的性能(一致或混合)。

例如,使用 SQL Server PDW 中的工作负荷管理技术,可以:

  • 将大量资源分配给加载作业。

  • 指定用于生成列存储索引的更多资源。

  • 排查执行缓慢的哈希联接问题,以查看它是否需要更多内存,然后提供更多内存。

工作负荷管理基础知识

关键术语

工作负荷管理
工作负荷管理 能够理解和调整系统资源利用率,以实现并发请求的最佳性能。

资源类
在 SQL Server PDW 中,资源类 是一个内置服务器角色,具有内存和并发的预分配限制。 SQL Server PDW 根据提交请求的登录名的资源类服务器角色成员身份将资源分配给请求。

在计算节点上,资源类的实现使用 SQL Server 中的资源调控器功能。 有关资源调控器的详细信息,请参阅 MSDN 上的 资源调控器

了解当前资源利用率

若要了解当前正在运行的请求的系统资源利用率,请使用 SQL Server PDW 动态管理视图。 例如,可以使用动态管理视图 (DMV) 来了解运行缓慢的大型哈希连接是否能够通过增加内存而得到改善。

调整资源分配

若要调整资源利用率,请更改提交请求的登录名的资源类成员身份。 资源类服务器角色命名为 mediumrclargercxlargerc。 它们分别表示中等、大和特大的资源分配。

例如,若要向请求分配大量系统资源,请将提交请求的登录名添加到 largec 服务器角色。 以下 ALTER SERVER ROLE 语句将登录 Anna 添加到“largerc”服务器角色中。

ALTER SERVER ROLE largerc ADD MEMBER Anna;  

资源类描述

下表描述了资源类及其系统资源分配。

资源类 请求重要性 最大内存使用量* 并发槽(最大值 = 32) 描述
违约 中等 400 MB 1 默认情况下,每个登录过程都允许占用少量的内存,以及分配请求的并发资源。

将登录名添加到资源类时,新类优先。 从所有资源类中删除登录名时,该登录名将恢复为默认资源分配。
MediumRC 中等 1200 MB 3 可能需要中等资源类的请求示例:

具有大型哈希联接的 CTAS 操作。

需要更多内存的 SELECT 操作以避免缓存到磁盘。

将数据加载到聚簇列存储索引中。

为具有 10 至 15 列的小型表构建、重建和重组聚集列存储索引。
Largerc 2.8 GB 7 可能需要大型资源类的请求示例:

具有大型哈希联接或包含大型聚合(如大型 ORDER BY 或 GROUP BY 子句)的大型 CTAS 操作。

需要大量内存的 SELECT 操作(如哈希联接)或聚合(如 ORDER BY 或 GROUP BY 子句)

将数据加载到聚集列存储索引中。

为具有 10-15 列的小型表创建、重建和重新组织聚集列存储索引。
xlargerc 8.4 GB 22 额外的大型资源类适用于在运行时可能需要额外大资源消耗的请求。

*最大内存使用量是近似值。

请求重要性

请求的重要性决定了 SQL Server 在计算节点上运行时分配给请求的 CPU 时间。 优先级较高的请求接收更多的 CPU 时间。

最大内存使用量

最大内存使用量是请求在每个处理空间内可以使用的最大可用内存量。 例如,mediumrc 请求最多可以使用 1200 MB 在每个分发中进行处理。 确保数据不偏斜仍然至关重要,以免让少数分布承担大部分工作。

并发插槽

分配 1、3、7 和 22 个并发槽的目标是允许大型进程和小型进程同时运行,而不会在大型进程运行时阻止小型进程。 例如,SQL Server PDW 可以分配最多 32 个并发槽,以同时运行 1 个额外的大型请求(22 个槽)、1 个大型请求(7 个槽)和 1 个中等请求(3 个槽)。

向并发请求分配最多 32 个并发槽的示例:

  • 28 个槽 = 4 个大槽

  • 30 个插槽 = 10 个中号

  • 32 个插槽 = 32 个默认值

  • 32 个槽 = 1 个特大 + 1 个大 + 1 个中等

  • 32 个槽 = 2 个大槽 + 4 个中槽 + 6 个默认槽

假设向 SQL Server PDW 提交 6 个大请求,然后提交 10 个默认请求。 SQL Server PDW 将按优先级顺序处理请求,如下所示:

  • 分配 28 个并发槽,以在内存可用时开始处理 4 个大请求,并将 2 个大型请求保留在队列中。

  • 分配 4 个并发槽,开始处理 4 个默认请求,并在等待队列中保留 6 个默认请求。

当请求完成并且并发槽可用时,SQL Server PDW 将根据可用资源和优先级分配剩余的请求。 例如,当有 7 个并发槽可用时,等待中的大型请求比等待中的中等请求对这 7 个槽具有更高的优先级。 如果有 6 个插槽可用,SQL Server PDW 将分配 6 个默认大小的请求。 但是,在 SQL Server PDW 允许请求运行之前,内存和并发槽必须全部可用。

在每个资源类中,请求按先进先出(FIFO)顺序运行。

一般备注

如果一个登录账户是多个资源类的成员,则资源最多的类优先。

将登录名添加到资源类或从资源类中删除时,更改将立即对所有将来的请求生效;正在运行或正在等待的当前请求不会受到影响。 登录不需要断开连接并重新连接即可进行更改。

对于每次登录,资源类别设置适用于单个语句和操作过程,而不适用于会话。

在 SQL Server PDW 运行语句之前,它会尝试获取请求所需的并发槽。 如果它无法获取足够的并发槽,SQL Server PDW 会将请求移动到等待状态to-be执行状态。 已分配给请求的所有资源都会被归还给系统。

大多数 SQL 语句始终需要默认资源分配,因此不受资源类控制。 例如,CREATE LOGIN 只需要少量资源,即使执行 CREATE LOGIN 的用户是资源类的成员,也仍然会被分配默认资源。 例如,如果 Anna 是 largerc 资源类的成员并提交 CREATE LOGIN 语句,则 CREATE LOGIN 语句将使用默认的资源数运行。

由资源类管理的 SQL 语句和操作:

  • ALTER INDEX REBUILD

  • ALTER INDEX REORGANIZE

  • ALTER TABLE REBUILD

  • 创建聚集索引

  • CREATE CLUSTERED COLUMNSTORE INDEX

  • CREATE TABLE AS SELECT

  • 创建远程表 AS SELECT

  • 使用 dwloader加载数据。

  • INSERT-SELECT

  • 更新

  • DELETE

  • 在具有更多计算节点的设备上执行还原数据库操作。

  • SELECT,不包括仅限 DMV 的查询

限制和局限

资源类控制内存和并发分配。 它们不控制输入/输出操作。

元数据

包含有关资源类和资源类成员信息的 DMV(数据管理视图)。

包含有关请求状态及其所需资源信息的数据管理视图(DMV):

从计算节点上的 SQL Server DMV 公开的相关系统视图。 有关 MSDN 上的这些 DMV 的链接,请参阅 SQL Server 动态管理视图

  • sys.dm_pdw_nodes_resource_governor_resource_pools

  • sys.dm_pdw_nodes_resource_governor_workload_groups

  • sys.dm_pdw_nodes_resource_governor_resource_pools

  • sys.dm_pdw_nodws_resource_governor_workload_groups

  • sys.dm_pdw_nodes_exec_sessions

  • sys.dm_pdw_nodes_exec_requests

  • sys.dm_pdw_nodes_exec_query_memory_grants

  • sys.dm_pdw_nodes_exec_query_resource_semaphores

  • sys.dm_pdw_nodes_os_memory_brokers

  • sys.dm_pdw_nodes_os_memory_cache_entries

  • sys.dm_pdw_nodes_exec_cached_plans

相关任务

工作负荷管理任务