服务器配置:并行成本阈值

适用范围:SQL Server

本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中配置 cost threshold for parallelism 服务器配置选项。 该 cost threshold for parallelism 选项指定 SQL Server 创建和运行查询并行计划的阈值。 仅当为同一查询运行串行计划的估计成本高于所 cost threshold for parallelism设置的值时,SQL Server 才为查询创建并运行并行计划。 成本指的是在特定硬件配置中运行串行计划估计需要花费的成本,而不是时间单位。 该 cost threshold for parallelism 选项可以设置为 0 到 32767 的任何值。

限制

成本是指成本的抽象单位,而不是预估时间的单位。 仅在对称多处理器上设置 cost threshold for parallelism

SQL Server 在以下情况下忽略 cost threshold for parallelism 该值:

  • 计算机只有一个逻辑处理器。

  • 由于配置选项, affinity mask SQL Server 只能使用单个逻辑处理器。

  • 选项 max degree of parallelism 设置为 1.

逻辑处理器是处理器硬件的基本单元,可让操作系统调度任务或执行线程上下文。 每个逻辑处理器一次只执行一个线程上下文。 处理器核心是解码和执行指令的线路。 处理器核心可能包含一个或多个逻辑处理器。 以下 Transact-SQL 查询可用于获取系统的 CPU 信息。

SELECT (cpu_count / hyperthread_ratio) AS PhysicalCPUs,
       cpu_count AS logicalCPUs
FROM sys.dm_os_sys_info;

建议

此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改。

在某些情况下,即使查询的成本计划小于当前 cost threshold for parallelism 值,也可以选择并行计划。 出现这种情况,是因为使用并行还是串行计划是根据先前优化过程所提供的开销估计确定的。 有关详细信息,请参阅查询处理体系结构指南

虽然默认值 5 足以满足大多数系统的需求,但不同的值可能适用。 如果需要,可以使用高值和低值执行应用程序测试,以优化应用程序性能。

权限

默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要使用两个参数执行 sp_configure 来更改配置选项或运行 RECONFIGURE 语句,用户必须拥有 ALTER SETTINGS 服务器级别权限。 ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式拥有。

使用 SQL Server Management Studio

  1. 在对象资源管理器中,右键单击服务器并选择 “属性”

  2. 选择“高级”节点。

  3. 在“并行度”下,将cost threshold for parallelism选项更改为所需的值。 键入或选择一个值(介于 0 到 32767 之间)。

使用 Transact-SQL

此示例说明如何使用 sp_configurecost threshold for parallelism 选项的值设置为 10

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 10;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

有关详细信息,请参阅服务器配置选项

跟进:为并行度选项配置成本阈值后

该设置将立即生效,无需重新启动服务器。