合 MSSQL安装后需要调整的几个参数
Tags: MSSQLSQL Server并行内存最大值MAXDOPCPU资源
并行开销阈--Cost Threshold for Parallelism
首先,我们根据官方文档的定义来理解下并行开销阈值的含义。
cost threshold for parallelism 选项指定 SQL Server 创建和运行并行查询计划的阈值。仅当运行同一查询的串行计划的估计开销高于在“并行的开销阈值” 中设置的值时,SQL Server 才创建和运行该查询的并行计划。成本指的是在特定硬件配置中运行串行计划估计需要花费的成本,而不是时间单位。“并行的开销阈值” 选项可设置为 0 到 32767 之间的任何值。默认值为 5。
并行意味着SQL Server能透过多个工作线程运行执行计划里的运算符。并行的目的是提高你查询的吞吐量。SQL Server里第1个影响并行的配置选项是所谓的并行开销阈值:
这里你配置的数字定义查询成本,查询优化器用它来找更便宜的并行执行计划。如果找到的并行计划更便宜,这个计划会被执行,不然串行计划会被执行。从刚才的图你可以看到,SQL Server默认配置使用5的成本阈值。当你的串行计划查询成本大于5,然后查询优化器再次运行查询优化来找更便宜并行执行计划的可能。
然而遗憾的是,5的成本值当下来说是个很小的数字。因此SQL Server会太快尝试并行你的执行计划。
而实际上呢,当你处理更大的查询时,并行才有意义——例如报表或数据仓库情形。在纯OLTP情形下,并行计划象征着糟糕的索引设计,因为当你有缺失索引时,SQL Server需要扫描你的整个聚集索引,因此你的查询成本越来越大,它们超过成本阈值,最后查询优化器经过判断给你并行计划。当人们看到并行计划出现时,总会担心数据库性能是不是有问题!但问题根源其实是缺失非聚集索引。
对于并行的成本阈值,我总推荐至少20,甚至50。那样的话,你确保SQL Server只为对更大的查询进行并行。即使在你面前有个并行计划,你也应该考虑下是否可以通过增加一个支持的非聚集索引来使这个查询的成本更低。另外,CXPACKET(并行度)并不意味着在你的系统里你有并行问题!
最大并行度--Max Degree of Parallelism (MAXDOP)
当在SQL Server里一个执行计划进入并行,最大并行度定义了执行计划里每个并行运算符可用工作线程。下图显示了这个选项的默认配置。