本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中配置 cost threshold for parallelism 服务器配置选项。
关于并行度的成本阈值
该 cost threshold for parallelism 选项指定 SQL Server 在具有多个 逻辑处理器的计算机上考虑并行计划的阈值。 该 cost threshold for parallelism 选项可以设置为 0 到 32,767 的任何值。
成本是查询计划中 估计 运算符成本的总和(例如 CPU 和 I/O)。 它是仅用于计划选择的相对度量值;它不测量实际运行时。
某些 Transact-SQL 组件可能会抑制并行计划。 例如,不可内联标量用户定义函数(UDF)、表变量修改和某些系统调用。 仅当最佳串行计划的估计成本超过 cost threshold for parallelism 该值时,SQL Server 才会评估并行替代项,然后可以选择更便宜的并行计划。
限制
在下列情况下,SQL Server 将忽略 cost threshold for parallelism 值:
计算机只有一个逻辑处理器。
由于
affinity mask配置选项的原因,只有一个逻辑处理器可供 SQL Server 使用。服务器
max degree of parallelism配置选项设置为1。
建议
此选项是一个高级选项,应仅由经验丰富的数据库专业人员更改。
默认值 5 为起点,而不是建议。 在现代 SQL Server 系统上,提高它有助于保持使用串行计划执行的较小 OLTP 查询。 在进一步更改之前,请使用小增量并观察整个业务周期。 如果需要,可以使用高值和低值执行应用程序测试,以优化应用程序性能。
注释
在 Azure SQL 数据库中,无法设置 cost threshold for parallelism。 用于 MAXDOP 控制并行度。 有关详细信息,请参阅 更改 Azure SQL 数据库和 Azure SQL 托管实例中的默认 MAXDOP。
在某些情况下,即使查询的计划成本低于当前 cost threshold for parallelism 值,也可以选择并行计划。 使用并行或串行计划的决定基于优化过程中前面提供的成本估算。 有关详细信息,请参阅查询处理体系结构指南。
注解
若要查看服务器配置选项是否 cost threshold for parallelism 为工作负荷设置过高或过低,请查找以下指示器。
| 并行度设置的成本阈值 | Description |
|---|---|
| 太低 | - 过多的 CPU 光查询并行运行。 - 在 查询存储中,许多计划已 is_parallel_plan 设置为 1。- CXPACKET 并 CXCONSUMER 主宰等待类型统计信息。 你可能还会看到 THREADPOOL 并 SOS_SCHEDULER_YIELD 等待。 |
| 太高 | - 工作负荷的 CPU 密集型查询不够并行,因此 CPU 利用率高于最佳。 - SOS_SCHEDULER_YIELD 主宰等待类型统计信息。 |
权限
默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要使用两个参数执行 sp_configure 来更改配置选项或运行 RECONFIGURE 语句,用户必须拥有 ALTER SETTINGS 服务器级别权限。
ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式拥有。
使用 SQL Server Management Studio
在对象资源管理器中,右键单击服务器并选择 “属性” 。
选择“高级”节点。
在“并行”下,将 选项更改为所需值
cost threshold for parallelism。 键入或选择从 0 到 32,767 的值。
使用 Transact-SQL
此示例演示如何使用 sp_configure 将值 cost threshold for parallelism 设置为 20。
USE master;
GO
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'cost threshold for parallelism', 20;
GO
RECONFIGURE;
GO
EXECUTE sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
有关详细信息,请参阅服务器配置选项。
跟进:在配置 cost threshold for parallelism 选项之后
该设置将立即生效,无需重新启动服务器。