合 MSSQL之单个SQL所能使用的CPU资源配置(并行配置)
Tags: MSSQLSQL Server并行MAXDOPCPU资源
什么是并行处理?
并行查询处理是通过使用多个CPU的功能来减少查询的响应时间的好选择。
并行处理旨在将大任务分解为多个小任务,这些小任务将由离散线程完成。 在这种方法中,单位时间内将执行多个任务。 因此,响应时间将大大减少。 对于SQL Server,这种想法不会改变。 它尝试以并行方式处理需要大量工作量的查询。 生成并行查询计划时,SQL Server中的查询优化器会考虑三个设置。 这些是:
- Cost Threshold for Parallelism 并行成本阈值
- Max Degree of Parallelism (MAXDOP) 最大并行度(MAXDOP)
- Affinity mask 亲和力面膜
并行成本阈值 (COST THRESHOLD FOR PARALLELISM)
估算查询成本是使用查询的I / O和CPU需求计算得出的单位。 此度量有助于优化器评估查询计划的成本并选择最佳计划。 查询优化器通过将查询计划中各个运算符的估计成本相加来计算查询的估计成本。 估计子树成本(估计子树大小)属性指示查询计划中计划的估计成本。
当该值超过“ 并行性成本阈值”设置时,查询优化器将开始考虑在并行计划旁边创建并行查询计划。 此设置的默认值为5,可以使用SQL Server Management Studio或Transact-SQL进行更改。
ENABLE_PARALLEL_PLAN_PREFERENCE查询提示会强制查询优化器生成并行查询计划,而无需考虑并行性的成本阈值。
1 2 3 4 5 6 7 | SELECT DISTINCT ProductID FROM Sales.SalesOrderDetailEnlarged SOrderDet INNER JOIN Sales.SalesOrderHeaderEnlarged SalesOr ON SOrderDet.SalesOrderID = SalesOr.SalesOrderID WHERE PurchaseOrderNumber LIKE 'PO%' GROUP BY ProductID OPTION(USE HINT('ENABLE_PARALLEL_PLAN_PREFERENCE')) |
并行参数配置
1 2 3 4 | SELECT * FROM sys.configurations d where d.name like '%parall%' or d.name like 'affinity%' ORDER BY name ; GO |
使用SQL配置
使用SQL配置过程,该设置立即生效(无需重新启动 MSSQLSERVER 服务):
1 2 3 4 5 6 7 8 9 10 11 | sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO sp_configure 'cost threshold for parallelism', 30; GO sp_configure 'max degree of parallelism', 0; GO RECONFIGURE WITH OVERRIDE; GO |
使用SSMS图形界面配置 选项
这些选项可更改实例的 MAXDOP。
- 在“对象资源管理器”中,右键单击所需的实例,然后选择“属性”。
- 选择“高级”节点。
- 在 “最大并行度” 框中,选择执行并行计划时所使用的最大处理器数。