共计 2381 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章给大家介绍 SQL Server 安装完成后有哪些需要立即修改的配置选项,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
你用安装向导安装了全新的 SQL Server,最后你点击了完成按钮。哇噢~~~ 现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新 SQL Server 默认配置是错误的。
是的,你没看错:SQL Server 的默认安装在很多方面的配置是错误的。在今天的文章里,我想给你展示下,为了更快的性能,在 SQL Server 安装完成后 3 个你需要立即修改的配置选项。我们开始吧!
最大服务器内存(Max Server Memory)免责声明:如果这些天你在 32 位系统上运行你的 SQL Server,请扔掉你的硬件,买个 64 位的系统,安装 64 位的 SQL Server,然后从这里继续读。
现在在你面前你应该 i 有个 64 位的 SQL Server。64 位意味着你可以理论上访问 2^64 的内存大小——那是 16 艾字节(10 亿 GB)!因为这些巨量的内存,计算机供应商当前限制 64 位系统的地址总线“只有”48 位——完全 64 位没有真正意义。用 48 位的地址空间,你可以访问 256TB 的内存——那还是大量的空间。
你可以使用最大服务器内存配置选项来配置 SQL Server 可以消耗的内存大小。下图显示的是在 64 位系统上 SQL Server 默认安装后的配置选项。
从刚才的图片你可以看到,SQL Server 默认配置是可以消耗上至 2147483647MB 的内存——那是 2 千兆!嗯,用 48 位的地址总线我们只能物理访问 256TB 的内存,现在 SQL Server 可以消耗上至 2 千兆的内存?这里有什么东西不对……最大服务器内存设置比 32 位最大整形值还大——2147483647。没别的。因此 SQL Server 可以消耗比物理地址更多的内存?这是一个很不好的默认配置。SQL Server 默认可以吃光你整个物理内存!
你总应该改变这个配置选项,这样的话你可以给系统一些内存,让它可以活着喘气。一般来说(在服务器上没有其它程序 / 进程)你应该系统至少 10% 的物理内存。这就是说你需要调低最大服务器内存设置。有 64GB 的物理内存我会配置最大服务器内存为 56GB,这样的话系统可以用剩下的 8G 来消耗和工作。
并行开销阀值(Cost Threshold for Parallelism)下一个你需要修改的配置选项是 SQL Server 处理并行开销的阀值。并行意味着 SQL Server 能透过多个工作线程运行执行计划里的运算符。并行的目的是提高你查询的吞吐量。SQL Server 里第 1 个影响并行的配置选项是所谓的并行开销阀值:
这里你配置的数字定义查询成本,查询优化器用它来找更便宜的并行执行计划。如果找到的并行计划更便宜,这个计划会被执行,不然串行计划会被执行。从刚才的图你可以看到,SQL Server 默认配置使用 5 的成本阀值。当你的串行计划查询成本大于 5,然后查询优化器再次运行查询优化来找更便宜并行执行计划的可能。
遗憾的是,5 的成本值当下来说是个很小的数字。因此 SQL Server 太快尝试并行你的执行计划。当你处理更大的查询并行才有意义——例如报表或数据仓库情形。在纯 OLTP 情形下,并行计划象征着糟糕的索引设计,因为当你有缺失索引时,SQL Server 需要扫描你的整个聚集索引(在与过滤(Filter)和剩余谓语(residual predicate)组合里),因此你的查询成本越来越大,它们穿过成本阀值,最后查询优化器给你并行计划。当人们看到并行计划时,总会担心!但问题根源是缺失非聚集索引。
对于并行的成本阀值,我总推荐至少 20,甚至 50。那样的话,你确保 SQL Server 只为你对更大的查询进行并行。即使在你面前有个并行计划,你也应该考虑下可否通过增加一个支持的非聚集索引来是这个查询成本更低。另外,CXPACKET 并不象征着在你的系统里你有并行问题!
最大并行度(Max Degree of Parallelism (MAXDOP))当在 SQL Server 里一个执行计划进入并行,最大并行度定义了执行计划里每个并行运算符可用工作线程。下图显示了这个选项的默认配置。
如你所见,SQL Server 使用默认值 0。这个值意味着 SQL Server 尝试并行化你的执行计划穿过分配给 SQL Server 的所有 CPU 内核(默认情况所有内核都分配给 SQL Server!)。你应该能看出这样的设置没有意义,尤其当你有大量 CPU 内核的系统。并行化本身带来负担,一旦你使用越多的工作线程,这个负担越大。
一个建议是设置最大并行度为在一个 NUMA 结点里拥有的内核数。因此在查询执行时,SQL Server 会尝试在一个 NUMA 结点里保持并行计划,这也会提高性能。
有时你也会看到建议去设置最大并行度为 1。这个是不好的建议,因为这个使你的“整个”SQL Server 单线程!即使维护操作(例如索引重建)已单线程执行,这会严重伤及性能!当然也有一些“获奖”产品指示你使用 1 的最大并行度(MAXOP)……
将承载 SharePoint 数据库的 SQL Server 实例的最大并行度 (MAXDOP) 设置为 1 以确保单个 SQL Server 过程能够为每个请求提供服务。
在你安装完 SQL Server 后,DBA 的真正工作才开始:你需要配置你的 SQL Server 安装到你的硬件配置。在这篇文章里你已看到,SQL Server 的默认配置是明显错误的。因此在安装后立即修改一些配置选项非常重要。我已经见过生产环境里 SQL Server 使用我这里提到的默认选项,因为它们“稍后“会被配置,“稍后”就从未发生了……
关于 SQL Server 安装完成后有哪些需要立即修改的配置选项就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。