SQL Server内存理解的误区

核心提示:SQL Server数据库与Windows操作系统来自同一个家庭

  为数据库配置比较大的内存,可以有效提高数据库性能。因为数据库在运行过程中,会在内存中划出一块区域来作为数据缓存。通常情况下,用户访问数据库时,数据先会被读取到这个数据缓存中。当下次用户还需要访问这个数据时,就会从这个数据缓存中读取。因为在数据缓存中读取数据要比在硬盘上读取数据快几百倍。所以扩大数据库服务器内存,可以有效提高数据库性能,特别是操作大型数据库时效果更加明显。

 SQL Server内存理解

SQL
Server数据库与Windows操作系统来自同一个家庭,在技术上具有一定的共通性。我们可以调整Windows操作系统的一些参数来提高SQLServer数据库服务器的性能,使之更高效的运行。

  但是,现在企业中普遍采用的数据库服务器都是32位的操作系统。而这个32位的操作系统却有最大内存的使用限制。通常情况下,标准的32位地址最多可以采用4GB的内存。若数据库管理员想让数据库系统采用更多的内存来提高数据库的性能,则就需要进行额外的配置。下面笔者就介绍两种常用的配置方式,让SQLServer数据库服务器支持大内存,让其成为数据库的加速剂。

内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求,提高数据读写的效率。

一、 提高虚拟内存来提高数据库服务器性能。

  一、让数据库应用程序支持3GB的内存空间

内存对数据库而言是如此的重要,因此只要在涉及数据库优化的地方,我们都可以看到内存的身影。我们通常会想尽各种办法来优化数据库内存的使用,比如开启AWE、设置最大内存、锁定内存页等,但在很多时候,我们实际上都不知道某个配置是否一定能够解决当前的问题,或者我们误以为会解决当前的问题,出现这种现象的原因是我们对数据库的内存理解还不够透彻或者理解存在误区,本文我希望将结合自己的经验和《SQL
Server 2012实施与管理实战指南》的内容,通过以【介绍SQL
server常见内存误区】的方式跟大家分享下我对SQL server内存的理解。

虚拟内存简单的来说就是内盘中的一块空间。当物理内存不够时,操作系统会自动把某些驻留在内存中暂时不用的内容移植到这个在硬盘上的虚拟内存中,以释放更多的空间给新的应用程序使用。也就是说,当物理内存使用完时操作系统会拿出一部分硬盘空间来充当内存使用,以缓解内存的压力。为此从某种程度来说,这个虚拟内存的设置也会影响到数据库服务器的性能。那么这个虚拟内存到底该设置多少为好呢?这没有一个固定的标准。这需要数据库管理员根据部署的应用来确定。

澳门新葡萄京官网注册 ,  虽然操作系统支持4GB内存。可是,这并不会全部给数据库等应用程序使用。默认情况下,在32位操作系统中,将有2GB的内存空间是为操作系统所保留的。即使没有用完,其他应用程序也是不能够染指的。而包含SQL
Server数据库在内的所有应用程序,只能过采用剩余的2GB内存空间。

 

如数据库没有一些高级的应用,如数据仓库、全文索引或者不适多个应用服务一身的话,笔者认为只要把虚拟内存设置为物理内存的1.5倍即可。但是,如果在数据库服务器上配置了数据仓库或者全文索引的话,则这个1.5倍的虚拟内存往往是不够的。此时笔者建议需要把虚拟内存配置为物理内存的3倍到四倍。同时,需要调整数据库中的最大服务器内存选项,将其设置为物理内存的1.5倍。也就是说,其在使用内存的时候,可以使用虚拟内存大小的一半。注意这个设置时必须的,否则的话,调整数据库虚拟内存很难起到应有的效果。而且当以后内存升级了,则也需要同时更改这个两个参数。

  但是,在实际应用中,操作系统往往用不着多大2G的内存。根据笔者的经验,一般只要为操作系统保留1G的内存已经足够其使用。只要没有病毒等不良因素作怪,这个内存不会被完全适用。如此的话,应用程序可以采用的内存空间就会多达3G,比原先整整多出一个G来。

误区一:SQL Server在32位操作系统只能使用4G内存

对于这个问题,我们从两个方面来看:

1.
在32位操作系统中,应用进程可以使用的虚拟地址空间大小为4G,其中2G是给核心态(操作系统),另外2G留给用户态(应用程序)。因此,SQL
server其实能最大利用的内存只有2G。

不过,这种核心态和用户态的分配方式是可以改变的,当在操作系统的启动文件(windows
server
2003的boot.ini)中开启3G开关后,便可以使得用户态的内存增加到3G,而只留1G给核心态,这样做的好处是可以使得SQL
server使用到3G的内存,不过坏处也很明显,因为减少了核心态的地址空间,在操作系统系统负载比较大时,可能会出现不稳定的风险。

(目前使用使用32位操作系统的客户越cong来越少,而且微软新推出的操作系统也都是64位,这种问题以后几乎都碰不到了。)

  1. 从windows server 2003到windows server
    2008,只要是标准版或者WEB版,且为32位架构时,操作系统最大也只能支持4G内存,即使按照上文1介绍的方法开启了3G开关,SQL
    server也只能使用最大3G的内存。

但如果是企业版或者数据中心版的操作系统时,同样是32位的架构,操作系统却最大可以支持到64G的内存(开启PAE的前提下)。但默认情况下SQL
server依然只能使用最大2G的内存。

因此,相比64G的操作系统内存来说,2G对数据库而言简直就是杯水车薪,资源浪费。为解决这个问题,微软为企业版和标准版的SQL
server(2005、2008)引入了AWE(地址窗口扩展)功能,你可以通过开启AWE来扩展SQL
server的可用内存,使之最大可以达到64G内存(实际上会小一点,因为操作系统本身需要占用部分内存)。

总结起来,可以用一个表格来描述上面两个场景:

操作系统类别

SQL Server可用地址空间

备注

32位

2G

 

32位+/3G开关

3G

 

32位(标准版、企业版)+SQL Server AWE

64G(标准版、企业版)

 

32位(标准版、企业版)+/3G开关+SQL Server AWE

16G(标准版、企业版)

这个是参考资料的,实际场景下我没有用过。

 

最后需要说明的一点就是,虚拟内存并不是越大越好。如果设置为10倍、20倍,那么这是浪费。以往内存中没有这么多的内容可以往虚拟内存中存放。所以,针对SQL
Server数据库与Windows服务器来说,4倍于物理内存的虚拟内存已经足够了。设置的再大的话,就没有多少的实际意义了。

  要实现这个转变,其实很简单。在Windows操作系统中,有一个BOOT启动配置文件。为了让数据库服务器支持3GB的用户模式进程空间,必须在这个配置文件中,加入一个/3gb的参数,然后重新启动操作系统即可。这么设置之后,应用程序就可以寻址3GB的进程地址空间
,而为操作系统保留1GB的内存空间。

误区二:在开启了AWE后,SQL Server的所有功能一定能使用超过2G的内存。

在SQL server进程中,内存并非全部由SQL
server的数据缓存所使用,部分通过SQL server调用的第三方代码、加载在SQL
server内部的其他dll、SQL
server连接、链接服务器、编译缓存、查询计划缓存等也会使用SQL
server进程中的内存。

这部分组件或者功能在申请内存时与传统的数据缓存申请的方式不同,因为他们通常会申请大于8KB的内存页,这种内存区域为multi-page(以前叫memtoleave)。对于multi-page占用的内存,是没法使用SQL
Server的AWE特性的,也就是说,在32位的SQL
Server中,数据库即使开启了AWE,也只能使用到2G的内存(用户态)。由此可见,AWE更多的是提升了data
page buffer pool的内存空间。

备注:在32位的SQL
Server中,multi-page的默认大小为256MB+sp_configure配置的最大线程数X512KB,它是SQL
server启动时就已经设定好的。

备注:在64位的SQL server中,multi-page的大小没有限制。

 

二、 调整本地客户端的任务优先级。

  有时候,这个小小的配置可以在很大程度上提高数据库的性能。记得有一次,笔者为一家企业优化数据库性能。笔者查看了用户的数据库环境之后,就建议用户增大数据库服务器的内存,从2G增加到4G.可是,效果并没有很大的改善。正当笔者束手无措的时候,就想到了改变操作系统与应用程序的内存分配方式。为此,笔者就更改了BOOT启动配置文件,只给操作系统保留1G的内存空间。重新启动后,数据库性能得到了很大的改善。

误区三:SQL Server进程不会使用超过最大内存设置的内存大小。

在SQL server的sp_configure中有一个max server memory
(MB)的配置项(SSMS中右击实例,在属性中选择内存也可以看到),我们很多人以为设置了这个值以后SQL
server的进程不会使用超过这个大小的内存。

其实不然,max server memory (MB)只是buffer pool的上限。但是在SQL
server的内存中,不仅仅包括buffer
pool,还有multi-page的内存,对于这部分内存,是无法通过max server memory
(MB)来限制的,所以,在实际环境中,我们可能会看到sqlservr.exe这个进程会占用的内存会超过max
server memory (MB)设定的值。

备注:一般情况下,multi-page占用的空间不会很大,因此,通常我们将max
server memory (MB)约等于SQL server进程占用的内存大小。

 

在数据库初始化的过程中,有大部分的任务需要在本地客户端上完成。即时在后续维护中,出于某种原因仍然要在本地客户端上操作。那么什么是本地客户端呢?其实本地客户端就是跟数据库服务器部署在同一台计算机上的客户端。如我们在导入期初数据的时候,为了方便会在本地客户端上直接进行操作。因为这可以节省数据在网络上传输的时间。

  二、为SQLServer启用更高的内存支持

误区四:设置了SQL Server的最小内存,表示SQL server启动时就会使用到这个大小的内存。

在SQL server的最小内存也是通过sp_configure配置,配置项为min server
memory
(MB)。该配置项默认为0,表示不限定最小内存,如果设置成某个具体值时,比如2G,表示当SQL
server占用的内存超过这个大小后,就不会再低于这个值。而不是说SQL
server启动时就马上达到这个值。

这种机制的好处就是避免SQL
server的内存被操作系统不断挤占,这样当负载一旦起来,数据库可以立即使用内存而不需要向操作系统申请内存。(当数据库申请时不见得操作系统有多余的内存分配给数据库,这时数据库就只能歇菜了)。

因此合理设置数据库的最低内存也是十分重要的。微软建议的最小内存值为服务器总内存减去1-2G,跟最大内存的值差不多。(前提是这个服务器制作数据库服务器)

参考资料:

 

不过在本地客户端上进行操作的时候,往往分为前台运行与后台运行。操作系统这么设计的本意是为了提高远程客户端的执行效率。如在远程客户端生成物料需求计划的时候,由于运算量比较大,其花费的时间可能比较久,如可能需要20分钟。为了提高工作效率,对于类似的作业,应用程序可以把这个运算放置在后台运行。不过需要注意的是,把某个作业放置在后台运行,并不能够节省其运行的时间,而往往由于放置在后台的作业其优先级比较低,往往实际花费的时间还会延长,如会延长到23分钟等等。之所以要把这个长时间运行的作业放置在后台,主要是为了让用户不用干等,可以先作其他事情。等到运行完成后,系统会自动把相关的结果返回给用户。这在感觉上是缩短了运行的时间(往往在等待的过程中时间过得特别慢),而实际上其运行的时间根本没有缩短,甚至会更长。

  如果数据库应用程序内存寻址空间达到3GB后,数据库管理员还不满足的话,则就需要通过增加物理内存的方式,来提高应用程序的性能。若需要服务器操作系统突破其默认4GB内存空间的限制,支持4GB以上的内存空间,也不是不可能的。只是需要进行额外的配置,并且,其维护的工作量也比较大。

误区五:SQL server占用内存特别大,说明SQL server有问题。

常见的关系型数据库都有这个特点:数据库就会尽可能的占用服务器的内存,而且这些占用的内存中即使很大部分空闲也不会释放,除非操作系统遇到内存压力,才会被操作系统重新分配。因此我们可以看到数据库服务器的内存使用率一般都会很高。

这其实并不是一个问题,反而是数据库的一个特性,就如文中首段说的,只有越多的数据缓存在内存中,数据库的读写效率才会越高,响应速度才会越快。这才是使用数据库的最佳方法。

不过,在很多场景下,服务器并非专用于数据库,为确保服务器上其他应用程序也能正常运行,我们必须为数据库设置最大内存,否则其他应用程序就会因为内存不足出现访问不流畅的问题。笔者曾碰到一个案例,某医院的HIS服务器必须每隔几天重启一次才能保证HIS业务能够被正常访问。原因就是因为数据库内存没有设置最大值,导致应用程序的内存被数据库挤占。

 

这个处理策略对于远程客户端来说确实有用,至少可以在感觉上缩短用户的等待时间。而且可以让用户先进行其他的操作。但是如果在本地客户端上,处理某些作业的时候,可能并不希望如此。如在本地客户度进行物料需求计划测试,数据库管理员希望即时把这个计划放置在后台运行,其也能够与前台应用程序具有相同的优先级,以减少这个处理时间。所以,当数据库管理员遇到类似情况时,就需要调整操作系统的相关设置,让作为在后台运行的应用程序,也能够与前台运行的其他应用程序具有相同的优先级。

  若想要SQLServer数据库支持4GB以上的内存寻址空间,则往往需要进行如下配置。

误区六:内存使用率高说明数据库服务器的遇到了内存压力。

(影响SQL Server性能的因素很多,不过因为本文的中心是谈谈内存因素与SQL
server的关系,所以其他因素不在本文考虑范围内。)

如果一个DBA因为数据库服务器的内存使用率很高而做出内存存在压力的判断,说明这个人还不够全面。前文已经说过,数据库“喜欢”内存是天性,几乎所有DB服务器都会出现内存使用率很高的问题(除非设置最大内存,且最大内存远低于服务器内存),因此我们不能据此来判断数据库的内存压力。

我们通常会通过一些性能计数器来监控数据库的内存使用情况,据此作出压力的判断:

SQLServer:Buffer ManagerBuffer cache hit ratio

(一般要求OLTP的cache hit ratio在95%以上,OLAP则需要在90%以上才能称之

为性能良好)

SQLServer:Buffer ManagerPage life expectancy

SQLServer:Buffer Managerfree pages

SQLServer:Memory ManagerTarget Server Memory

SQLServer:Memory ManagerTotal Server Memory

上述后三个指标最能直观反映SQL server是否存在内存压力,free pages表示SQL
server占用的内存中,有多少页面是free状态,将这个数值乘以8KB就得到了可用缓存的大小,这个值越大,说明SQL
server占用的内存有很多还未被使用,因此说明了内存没有压力问题。

Total Server Memory表示SQL server为自己分配的buffer
pool的总大小(已使用和未使用)。Target Server
Memory表示操作系统能够分配给SQL
server的目标内存大小,其最大值约等于【误区一】中描述的SQL
server可用地址空间的大小,但会随着操作系统的压力增加而减少。正常情况下,Target
server memory会大于total server memory,说明SQL server为自己分配的buffer
pool还比较少,小于操作系统为SQL
server设定的目标内存大小,数据库此时不会有内存压力。不过,随着操作系统的压力增加,它会调小Target
Server memory的值,使其小于SQL Server的Total Server
Memory,这样一来,SQL Server不得不释放已占用的缓存,减小total server
memory,这种情况,说明数据库服务器存在内存压力。

 

通常情况下,安装完干净的SQL
Server数据库时,服务器任务调度设置为“务”,即前后台应用程序没有优先级的分别。也就是说,此时将为前台应用程序与后台应用程序提供相等的处理时间。但是有时候为了兼顾远程客户端,在部署实例的时候,会改变这设置。如把降低后台应用程序的优先级,让更多的资源能够服务于前台应用程序。在大部分情况下,这个设置是必要的。不过如果出于某些原因需要在本地客户端执行某些操作的话,则数据库管理员需要暂时调整这个配置,以节省某些作业的运行时间。有时候甚至可以将服务器任务调度设置为最大或者应用程序,这就可以为前台应用程序提高最大的处理器时间。

  第一步:锁定内存页。

误区七:增加内存一定能够提升SQL server的性能。

数据库虽然会尽可能多的占用内存,但并不意味增加内存就一定是越多越好,就如同上文说的,如果数据库的内存长期没有什么压力,增加内存也不会带来性能的提升。

另外,在32位 的SQL
server中,在数据库启动时就为连接、查询计划、第三方dll、链接服务器等分配了固定大小的multi-page(上文在介绍AWE时已有介绍),因为multi-page的大小不会随着内存的增加而改变,所以即使增加内存,也无益于这些功能、组件,而只是为增大了数据缓存。

备注:在64位的SQL server中,multi-page的大小没有限制。

 

可见,任务调度计划设置也没有一个统一的优劣标准。主要还是需要看数据库服务器到底用来做什么?为此这也对数据库管理员提出了比较高的要求。此时数据库管理员必须要理解各种优先级设置对于数据库服务器性能的影响。然后再根据当时的实际应用来合理的调整任务级别的优先级,以取得本地客户端操作的最大性能。

  默认情况下,内存大小与操作系统的虚拟内存之间有一个正比例关系。在这里,数据库管理员只想增大服务器的物理内存,而不想对虚拟内存有什么影响。故需要锁定内存页。锁定内存页的主要作用就是确定哪些帐户可以使用进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。默认情况下,这个选项的只为OFF.也就是说,在必要的时候,系统会将数据分页到硬盘的虚拟空间中。为了最大程度发挥内存的效用,就需要把这个选项开启。不过这数据库管理员往往需要寻求系统管理员的帮助,因为只有具有系统管理员权限的用户,才能够给更改这个选项。

误区八:如果其他应用程序也需要内存,SQL server会释放一部分自己的内存,以保证其他应用程序能够正常运行。

SQL
Server不会为其他程序释放自己以占用的内存,只有在操作系统遇到内存压力时,才会根据操作系统的要求减少自己的内存占用量。

但如果SQL
server启用了锁定内存页的,那即使是操作系统有要求,其内存也不会释放。因为锁定内存页会使SQL
server占用的内存长久保留在物理内存中,避免被分页到虚拟内存中去,这是提升SQL
server性能的常见做法。在SQL
Server的推荐配置中,我们经常建议客户这样做。不够为了避免内存占用太大,可以通过设置最大内存来限定内存的使用上限。

三、 限制系统内存用户文件缓存的大小。

  第二步:启用Awe Enable选项。

毋庸置疑,数据库服务器的物理内存对于数据库的性能具有至关重要的影响。但是有时候我们会发现一个奇怪的现象,即即时增加了数据库服务器的物理内存,但是仍然没有发现数据库的性能有很大的改善,或则说比原先的还要差一点。这是什么原因呢?如结合SQLServer数据库来说,这主要是内存的分配不是很合理。如大部分的内存被用来存放文件缓存。此时如果增加的内存都被用来存放文件缓存了,那么光靠简单的增加内存并不能够提高数据库的性能。所以,有时候我们数据库管理员需要优化SQL
Server服务器的内存使用情况,如需要限制用户文件缓存的内存量。

  默认情况下,即使服务器操作系统支持4GB以上的内存空间,可是数据库应用程序并不一定支持。为了让SQLServer应用程序也支持这个,就必须更改数据库的配置参数。也就是说,需要将这个选项的值设置为1,然后重新启动数据库系统。这个配置比较简单,只需要利用命令sp_configure
‘awe enabled’,
1即可。不过在进行这个配置之前,需要注意两个细节方面的内容。一是数据库用户需要这个操作的权限。二是这里有一个BUG,即在SQL
Server数据库中会有一个错误信息。数据库管理员可以忽略这个信息。

那么该如何限制呢?这不是SQLServer数据库服务器来完成的,而是需要通过Windows操作下系统的配置来实现。如要限制文件系统缓存,需要确保没有选择“最大化文件共享数据吞吐量”这个选项(其原来是为文件共享所准备的),然后选择“最小化使用对内存”或者“平衡”选项,来制定最小文件系统缓存。

  第三步:限制文件系统缓存。

具体来说,可以按如下步骤来调整这个选项,以提高服务器的性能。首先,依次打开控制面板、选择网络连接、单击本地连接。然后打开常规选项卡,选择属性。在本地连接属性对话框中选择常规选项卡,选择微软网络的文件和打印机共享,并单击属性。在弹出来的对话框中,去掉“最大化文件共享数据吞吐量”选择,可以选择“最大化网络应用程序的数据吞吐量”。然后按确定即可。如此操作系统就会自动调整内存的分配,不会给文件缓存保留很大的空间,从而可以提高数据库内部处理的性能。往往这对于事务性的应用系统很有作用,能够在很大程度上提高数据库的性能。

  若增加的内存给操作系统或者其他应用程序用了,那么数据库管理员不是白忙一场吗?为此,数据库管理员还需要优化数据库系统内存的使用情况。如需要限制系统用于文件缓存的内存量。如要这么处理的话,只需要简单的三个步骤即可。

不过在调整这个配置后,如果在站台服务器上还部署有文件服务器的话,那么这个文件服务器的性能就会受到比较大的影响。因为对于文件服务器应用来说,需要比较大的文件缓存量。为此在某种程度上来说,数据库服务器与文件服务器在这方面是相互冲突的。数据库管理员就需要相互权衡,然后确定一个最佳的处理方案。不过一般情况下,不建议将数据库服务器与文件服务器、打印服务器等等部署在同一个服务器上。因为这三种不同的应用,彼此之间的资源争用还是很厉害的。为此会给数据库的性能带来比较大的负面影响。

  首先,数据库管理员在操作系统中,找到控制面板,并双击网络连接,然后选中本地连接。其次,双击本地连接,在弹出的对话框中,找到常规选项卡,单击属性。选中网络文件与打印机共享,并单击属性。最后,在弹出的对话框中,去掉”最大化网络应用程序数据吞吐量”复选框。一路按确认即可。这个简单的步骤,就可以优化数据库内存的使用率。

如果光从数据库服务器来说,限制文件缓存的内存使用量,确实可以提高数据库服务器的性能。特别是对于某些特别的应用与计算,由于需要用到比较大的内存,故可以大幅度提高这些作业的运算量。

  三、大内存维护管理几个关键点

可见我们在优化数据库性能的时候,有时还不能够光从数据库服务器着手。必要的时候,我们需要换一个角度,从操作系统出发,调整操作系统的相关配置,也能够明显的提高数据库的性能。

  在通常情况下,往往不需要启用4GB以上的内存。但是,若在服务器上,同时启用了其他的应用程序服务。如在一台服务器上同时有数据库应用程序、邮件应用程序、文件服务器等多个应用服务的话,则可能原有的4GB内存无法满足。系统管理员不得不对内存进行升级。但是,对内存升级之后,数据库管理员需要手工对内存的分配进行干预,以免SQLServer应用程序占用比较多的内存空间,而影响其他应用程序的性能。

  1、配置max server
memory选项。虽然说这个选项并不是必须要修改的,但是笔者仍强烈建议数据库管理员要修改这个选项。特别是数据库应用程序与其他应用程序共享同一台服务器时。因为启动SQLServer对大内存的支持后(将Awe
Enabled设置为1),而且可用物理内存大于用户模式进程空间。则当启动数据库服务器时,运行的SQLServer实例将会占用几乎所有的可用内存
(不管需不需要使用,数据库服务器程序会先锁定这些内存。这就叫占着茅坑不拉屎)。而这个max
server
memory选项就是用来配置其最大可以占用的内存数量。数据库管理员需要预先估算出一个合理的数值,然后进行配置。让数据库应用程序与其他应用服务能够共同改善,至少不能够对其他应用程序的性呢产生不良影响。在比较极端的情况下,可以在升级内存之前,先关闭数据库应用程序;然后启用其他应用程序服务。观测一段时间,看看他们所需要用到多少的内存。然后升级内存,并为其他应用程序至少保留以前所需要的内存空间。否则的话,就会对其他应用程序产生不良影响。牺牲其他应用程序的性能来提高数据库的性能,这是拆西墙补东墙的做法,不值得取。

  2、多个SQLServer实例内存如何分配。往往在一个SQLServer数据库中,会配置多个数据库实例。一个数据库实例用来负责ERP系统的运行,另外一个则是给CRM系统使用。在同一个数据库系统中,有多个数据库实例,此时该如何在各个实例之间分配可用的内存呢?这基于操作系统的不同,又有所不同。如果数据库操作系统采用的是2000系列的,则需要为每个数据库实例配置max
server
memory选项。否则的话,其中某一个数据库实例就有可能锁定全部的可用内存。这主要是因为2000系列的服务器系统并不支持动态分配大内存。所以需要为每个数据库实例配置这个选项。但是,若数据库服务器采用的是2003系列的服务器操作系统,则不需要进行手工的配置这些参数。因为操作系统会动态地分配内存。也就是说,操作系统会按照总体系统要求平衡SQLServer各个实例之间内存的使用。不过为了提高数据库整体性能,最好还是为各个实例配置max
server memory;而不让操作系统来搞平衡。

发表评论

电子邮件地址不会被公开。 必填项已用*标注