Analytics Platform System 中的工作负载管理

SQL Server PDW 的工作负载管理功能,允许用户和管理员将请求分配给内存和并发的预设配置。 使用工作负载管理提高工作负载的性能(无论是一致还是混合),方法是允许请求拥有适当的资源,而不会永远导致任何请求不足。

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

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

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

  • 对低性能哈希联接进行故障排除,以了解其是否需要更多内存,然后提供更多内存。

工作负荷管理基本信息

主要术语

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

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

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

了解当前资源利用率

若要了解当前正在运行的请求的系统资源利用率,请使用 SQL Server PDW 动态管理视图。 例如,可以使用 DMV 来了解缓慢运行的大型哈希联接是否可以通过增加内存实现受益。

调整资源分配

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

例如,若要向请求分配大量系统资源,请将提交请求的登录添加到 largerc 服务器角色。 以下 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 会将请求移动到等待执行的状态。 已分配给请求的所有资源系统都会返回到系统。

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

资源类控制的 SQL 语句和操作:

  • ALTER INDEX REBUILD

  • ALTER INDEX REORGANIZE

  • ALTER TABLE REBUILD

  • CREATE CLUSTERED INDEX

  • CREATE CLUSTERED COLUMNSTORE INDEX

  • CREATE TABLE AS SELECT

  • CREATE REMOTE TABLE AS SELECT

  • 使用 dwloader 加载数据。

  • INSERT-SELECT

  • UPDATE

  • DELETE

  • RESTORE DATABASE,还原到具有更多计算节点的设备时。

  • 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

相关任务

工作负载管理任务