第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器

原文:第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器

前言:

SQLServer提供了一个系统存储过程,SP_Configure,可以帮助你管理实例级别的配置。微软建议使用默认配置,但是基于不同的服务器、不同负载的系统和你的用法,更改配置可能会给你的性能带来好处。在32位和64位系统中,sp_configure会有一些差异。

我们经常见到SQLServer所在的服务器上还包含了如IIS、文件服务器或者域控制器这些服务或者功能。这些会影响你的性能甚至对正常运作有阻碍作用。

本系列文章将包含:

1、 为SQLServer配置更多的处理器。

2、 32位和64位系统中的内存配置。

3、 配置“对即时负载的优化”

4、 优化SQLServer实例的配置

配置SQLServer以使用更多的处理器:

今时今日的系统,数据库变得越来越大。为了更快地从数据库获取信息,仅靠管理你的数据库并不足够,还需要更多的CPU来处理。

不管你如何高效地维护索引和统计信息,你都很难从一个使用低效CPU的SQLServer中获得足够好的响应时间。如何选择合适的CPU用于数据库的运作不在本系列的范围之内,但是我们将演示如何使的你的CPU运作得更加强大和有效。

你是否曾经想过SQLServer在运行查询的时候会使用多少个CPU?用户经常希望通过购买更多、更快的CPU来加快SQLServer的运作,但是更重要的应该是关注在SQLServer在运行时需要用到多少个?

开始工作:

在开始深入之前,需要了解你的服务器上有多少个CPU。可以使用一个SQLServer的DMV,sys.dm_os_sys_info来查找这部分的信息。这个DMV会尝试返回关于计算机和关于资源消耗等方面的信息:

SELECT  cpu_count AS ‘Cores‘ ,--逻辑CPU总数
        hyperthread_ratio	--一个物理CPU的逻辑内核与物理内核的比
FROM    sys.dm_os_sys_info

步骤:

1、 为了设置在实例级别上运行查询时用到的CPU数量,执行下面语句:

--0是默认值
sp_configure ‘max degree of parallelism‘, 0
RECONFIGURE WITH OVERRIDE
GO

2、 从语句级别去设置并行度的值,可以使用hint来实现,下面加上SETSTATISTICS TIME来看看不同的并行度的差异:

SET STATISTICS TIME ON
SELECT  *
FROM    Sales.SalesOrderDetail
OPTION  ( MAXDOP 1 )
SET STATISTICS TIME OFF
GO

SET STATISTICS TIME ON
SELECT  *
FROM    Sales.SalesOrderDetail
OPTION  ( MAXDOP 0 )
SET STATISTICS TIME OFF
GO

下面是截图:

分析:

SQLServer 有很优秀的算法体系去决定是否并行运行查询。改写SQLServer的决定需要经验和专业知识。至于使用多少个CPU,这个比较确定的方法就是——试验。

在步骤1中,使用SP_Configure存储过程来把最大并行度设为0,也就是默认值,这个值代表这SQLServer是否生成并行执行计划,如果是,可以使用多少个CPU。如果你设置为4,SQLServer将使用4个核心来处理查询,如果设为1,就不会发生并行度。

在步骤2中,使用OPTION来对特定查询设置并行查询。这里有两个SELECT语句同时执行。第一个查询使用了MAXDOP =1,意味着不使用并行度执行查询,而第二个查询使用了MAXDOP =0,意味着由SQLServer自己决定是否使用并行度运行。

在加了SET STATISTICS TIME之后,可以看到每个查询总共消耗了多少CPU时间。

扩充知识:

在生产环境中更改默认的最大并行度将会非常危险。所以尽可能保持现状,如果你想修改,需要和你的上司或者同事商讨。经验表明,SQLServer并不总是为了单一查询而使用所有CPU。除此之外,在OLTP系统中,不建议调整这个设置,但是在OLAP系统中,这却是可以考虑的。

另外,如果你有16个核心,并把MaxDegree of Parallelism设为8,并不以为这只有8个核心会用在SQLServer上,仅仅代表单一查询不会使用超过8个核心而已,即使在并行运行,也如此。但是SQLServer依然会使用所有可用的核心。

时间: 2024-11-06 03:41:27

第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器的相关文章

第十七章——配置SQLServer(4)——优化SQLServer实例的配置

原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServer ManagementStudio的图形化界面实现. 准备工作: 为了查看SQLServer当前实例的配置,也可以使用下列查询来实现: SELECT * FROM sys.configurations ORDER BY name 下面是本机的结果: 步骤: 1. 执行下面语句,以便看到实例级别的

第十七章——配置SQLServer(3)——配置“对即时负载的优化”

原文:第十七章--配置SQLServer(3)--配置"对即时负载的优化" 前言: 在第一次执行查询或者存储过程时,会创建执行计划并存储在SQLServer的过程缓存内存中.在很多时候,我们会执行一些简单的程序,仅仅执行一次,而为这些查询创建存储过程是非常浪费内存资源的.由于内存不足,可能会导致你的缓存溢出,从而影响性能.在2005之前,这是一个大问题,为了纠正这个问题.微软在SQLServer 2008中引入了对即时查询负载的优化功能.这个功能在2012也依旧可用.是基于实例级别的.

第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE来限制内存.但是,在SQLServer2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间.如果你服务器上有很多内存,就只能升级到64位系统.下面是微软给出的内存限制: 虽然2012以后已经弃用AWE,但是了解一下32位系统如何使用AWE(Address Windowi

SqlServer 连接字符串多种配置

1 Application Name(应用程序名称):应用程序的名称.如果没有被指定的话,它的值为.NET SqlClient Data Provider(数据提供程序). 2 AttachDBFilename/extended properties(扩展属性)/Initial File Name(初始文件名):可连接数据库的主要文件的名称,包括完整路径名称.数据库名称必须用关键字数据库指定. 3 Connect Timeout(连接超时)/Connection Timeout(连接超时):一个

GG配置Oracle同步到SQLServer

源端目标端准备一张测试用的表. Oracle源端: drop table ggmgr.t1; create table ggmgr.t1( id int primary key, name varchar2(50), time date); Sqlserver目标端: BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL

采用sqlserver的缺省配置,在生产环境经常碰到系统响应慢(甚至hung的情况)

请重视并正确配置sqlserver实例及数据库的参数,一般化的配置推荐如下: 1.数据和日志文件的初始大小分别设置为10G和2G,均设置为按照固定200M大小增长,不限制最大值: 2.sever实例设置最大并行度为1(最大不要超过4),或并行的开销阈值为20:   没有更改sqlserver的缺省配置,在生产环境经常碰到系统响应慢(甚至hung的情况),日志扩展与并行计算引起线程交互的等待事件如下:

ogg 12.3 for sqlserver 2016 CDC模式配置

本文主要讲述ogg 12.3 通过CDC抽取sqlserver 2016 enterprise的过程,投递配置相对简单,所以不在此阐述. 配置步骤概述 1. 解压ogg 12.3 for sqlserver软件,执行create subdirs,编辑mgr并启动. 2. 数据库安装配置,并打补丁 3. create schema ogg 4. 创建测试表 5. 创建globals文件 6. 创建同步用户 7. 确保sqlagent能正常启动 8. 在源端DB上启用CDC 9. add trand

SQLServer 2014 Always on配置全过程(WSFC环境配置)

1.服务器管理器->功能->添加功能->故障转移集群 2.配置WSFC 为所有节点均安装完"故障转移群集"服务后,在任意节点服务器的"服务器管理器"中展开"故障转移群集管理器"对WSFC进行配置. 故障转移群集管理器->创建一个群集 在集群中将两个服务器放上去 点击下一步 成功后长这个样子 完成之后再去设置仲裁 至此,为SQL Server 2012 AG准备的WSFC环境已经完成. (在配置仲裁的时候发现配置两个虚拟机不

Gradle 1.12 翻译——第十七章. 从 Gradle 中调用 Ant

有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41204073 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qin