SQL Serve里DBA要去改变的3个配置选项
用安装向导安装了全新的SQL Server,最后你点击了完成按钮。哇噢~~~现在我们可以把我们的服务器进入生产了!
抱歉,那并不是真的,因为你的全新SQL Server默认配置是未优化的,一个合格的DBA一定会对默认安装中配置进行修改。
当然,如果你只是学习用途,默认配置微软确实已经做得很好。
但服务器进入生产,为了更快的性能,在SQL Server安装完成后3个你需要立即修改的配置选项。
1. 最大服务器内存(Max Server Memory)

这是一个很不好的默认配置。SQL Server默认可以吃光你整个物理内存!
你总应该改变这个配置选项,这样的话你可以给系统一些内存,让它可以活着喘气。一般来说(在服务器上没有其它程序/进程)你应该留给操作系统至少10%的物理内存。
这就是说你需要调低最大服务器内存设置。有64GB的物理内存我会配置最大服务器内存为56GB,这样的话系统可以用剩下的8G来消耗和工作。
2.并行开销阈值(Cost Threshold for Parallelism)

这里你配置的数字定义查询成本,查询优化器用它来找更便宜的并行执行计划。如果找到的并行计划更便宜,这个计划会被执行,不然串行计划会被执行。从刚才的图你可以看到,
SQL Server默认配置使用5的成本阈值。当你的串行计划查询成本大于5,然后查询优化器再次运行查询优化来找更便宜并行执行计划的可能。
遗憾的是,5的成本值当下来说是个很小的数字。因此SQL Server太快尝试并行你的执行计划。当你处理更大的查询并行才有意义——例如报表或数据仓库情形。
在纯OLTP情形下,并行计划象征着糟糕的索引设计,因为当你有缺失索引时,SQL Server需要扫描你的整个聚集索引(在与过滤(Filter)和剩余谓语(residual predicate)组合里),
因此你的查询成本越来越大,它们穿过成本阈值,最后查询优化器给你并行计划。当人们看到并行计划时,总会担心!但问题根源是缺失非聚集索引。
对于并行的成本阈值,我总推荐至少20,甚至50。那样的话,你确保SQL Server只为你对更大的查询进行并行。即使在你面前有个并行计划,
你也应该考虑下可否通过增加一个支持的非聚集索引来是这个查询成本更低。另外,CXPACKET并不象征着在你的系统里你有并行问题!
3.最大并行度(Max Degree of Parallelism (MAXDOP))

如你所见,SQL Server使用默认值0。这个值意味着SQL Server尝试并行化你的执行计划穿过分配给SQL Server的所有CPU内核(默认情况所有内核都分配给SQL Server!)。
你应该能看出这样的设置没有意义,尤其当你有大量CPU内核的系统。并行化本身带来负担,一旦你使用越多的工作线程,这个负担越大。
一个建议是设置最大并行度为在一个NUMA结点里拥有的内核数。因此在查询执行时,SQL Server会尝试在一个NUMA结点里保持并行计划,这也会提高性能。

有时你也会看到建议去设置最大并行度为1。这个是不好的建议,因为这个使你的“整个”SQL Server 单线程!即使维护操作(例如索引重建)已单线程执行,这会严重伤及性能!
SQL Serve里DBA要去改变的3个配置选项的更多相关文章
- SQL Serve里你总要去改变的3个配置选项
你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...
- 在SQL Serve里停用行和页层级锁
今天我想谈下SQL Server里另一个非常有趣的话题:在SQL Server里停用行和页层级锁.在SQL Server里,每次你重建一个索引,你可以使用ALLOW_ROW_LOCKS 和ALLOW_ ...
- SQL Server里的自旋锁介绍
在上一篇文章里我讨论了SQL Server里的闩锁.在文章的最后我给你简单介绍了下自旋锁(Spinlock).基于那个基础,今天我会继续讨论SQL Server中的自旋锁,还有给你展示下如何对它们进行 ...
- 在SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
- SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
- SQL Server里如何处理死锁 (转)
http://www.cnblogs.com/woodytu/p/6437049.html 在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以 ...
- SQL Server里的闩锁介绍
在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...
- 在SQL Server里如何进行页级别的恢复
在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...
- 在SQL Server里如何进行数据页级别的恢复
在SQL Server里如何进行页级别的恢复 关键词:数据页修复 在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你 ...
随机推荐
- RF之简介
robot framework 是一个通用型的自动测试框架 - 自动测试用例的实现方式 - 自动测试用例的开发支持 : IDE.库 - 和用例管理系统的集成 - 测试执行:相关测试套件和测试用例的执 ...
- NPM 问题汇总
1. Error: setuid user id does not exist Error: setuid user id does not exist at /usr/local/lib/node_ ...
- SQL Server 2012 官方版 / SQL Server 2012下载
SQL Server是微软的一款专业免费的关系数据库管理工具, 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理服务,SQL Server 数据库引擎为关系型数据和结构化 ...
- IT兄弟连 HTML5教程 CSS3属性特效 文字阴影
文字阴影是可以叠加的.最基本可以给出四个值,用法如下: text-shadow:x y blur color 文字阴影的参数说明如表1所示. 表1 CSS3文字阴影参数说明 横向偏移量和纵向偏移量可 ...
- Java基础语法06-面向对象-继承
七.继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成继承关系. 继承的好处 提高代码的复用性. 提高代码的扩展性. 类与 ...
- XNginx升级记录
之前的博文提到过,XNginx - nginx 集群可视化管理工具, 开发完成后一直稳定运行,直到前面因为一个站点的proxy站点配置问题,导致需要修改nginx 配置文件模板,因此借此机会对系统做了 ...
- SpringCloud Zuul2.X网关实现服务熔断降级(复制即用)
版本: <properties> <spring-boot.version>.RELEASE</spring-boot.version> <spring-cl ...
- 一起学Spring之三种注入方式及集合类型注入
本文主要讲解Spring开发中三种不同的注入方式,以及集合数据类型的注入,仅供学习分享使用,如有不足之处,还请指正. 概述 Spring的注入方式一共有三种,如下所示: 通过set属性进行注入,即通过 ...
- jQuery实现下拉框默认选中
<form class="form-inline" method="post" action="/score_result/"> ...
- mysql安装、使用
一.下载.安装 1.下载 (1)下载地址 https://dev.mysql.com/downloads/mysql/ (2)此处我下载最新版(8.0.18) 2.安装 (1)解压.并配置环境变量 s ...