享受生活,享受学习

导航

关于sql server占用系统资源的问题

sql server占用系统内存,会随着访问的增加,一直增加,访问关闭也不主动释放资源。直到足够的可用内存以防操作系统交换内存

动态管理   Windows   NT   和   Windows   2000   上的内存   
  当   SQL   Server   数据库引擎在   Microsoft  Windows   NT;   或   Windows  2000   上运行时,其默认内存管理行为并不是获取特定的内存量,而是在不产生多余换页   I/O   的情况下获取尽可能多的内存。为此数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统交换内存。   
    
  SQL   Server   实例在启动时通常获取   8   到   12   MB   的内存以完成初始化过程。当实例完成初始化后,就不会再获取更多的内存,直到用户连接到该实例并开始产生工作负荷。这时,该实例根据需要不停地获取内存以支持工作负荷。随着更多的用户连接并运行查询,SQL   Server   将获取支持需求所需的额外内存。该实例将继续获取内存直到达到自身的内存分配目标,并且直到达到该目标的下限才会释放任何内存。   
    
  为了在不产生多余换页   I/O   的情况下获取尽可能多的内存,SQL   Server   的每个实例都设置一个内存获取目标,直到计算机的可用物理内存在   4   MB   到   10   MB   的范围内。之所以选择该范围是因为测试表明   Windows   NT   和   Windows   2000   都有最小内存交换,直到内存分配等于可用物理内存减去   4   MB。工作负荷处理任务重的   SQL   Server   实例保留的可用物理内存为范围的较低端   (4   MB);工作负荷处理任务轻的实例保留的可用物理内存为范围的较高端   (10   MB)。  
   
  SQL   Server   实例的目标随工作负荷的改变而变化。当更多的用户连接并产生更多的工作时,该实例倾向于获取更多的内存以使可用的内存保持在   4   MB   的限制以下。当工作负荷减轻时,该实例将其目标调整为   10   MB   的可用空间,并释放内存给操作系统。将可用空间量保持在   10   MB   与   4   MB   之间可防止   Windows   NT   或   Windows   2000   过多执行换页操作,同时使   SQL   Server   得以获得尽可能最大的高速缓冲存储器而不至引起额外的交换。  
   
  实例的目标内存设置与数据库缓冲池的页相对于可用池大小的需求有关。在任何即时点,缓冲区页的总需求取决于满足所有当前执行的查询所需的数据页数。如果相对于高速缓冲存储器内的页数,数据页的需求很大,则当前在缓冲区内的每一页很可能在相对较短的时间内由新页替换。这可由"缓冲区管理器"对象的"页生命期"性能计数器来度量。对于相对较小的缓冲区有较高需求的情况将生成短生命期,而纯粹的影响就是使   I/O   增加,因为在页可由多个逻辑读取引用之前往往要被重写。为减轻这个问题,数据库引擎可以获取更多的内存以增加高速缓冲存储器的大小。当页生命期长时,数据库引擎将可用内存定位于目标的高端   (10   MB);而当页生命期短时,数据库引擎定位于目标范围的低端   (4   MB)。  
   
  随着其它应用程序在运行   SQL   Server   实例的计算机上启动,它们消耗内存致使可用物理内存量降到   SQL   Server   的目标以下。SQL   Server   实例于是从其地址空间释放足够内存,以使可用内存量回到   SQL   Server   的目标。如果有其它应用程序停止运行而使可用内存增多,SQL   Server   实例将增加其内存分配大小。SQL   Server   可以每秒释放并获取几   MB   字节的内存,这使它得以根据内存分配变化作出快速调整。  

使用两个服务器内存选项   min   server   memory   和   max   server   memory   重新配置缓冲池中   Microsoft®   SQL   Server™   实例所使用的内存量(以   MB   为单位)。  
   
  默认情况下,SQL   Server   能够可用系统资源动态改变它的内存需求。min   server   memory   的默认设置为   0,max   server   memory   的默认设置为   2147483647。可以为   max   server   memory   指定的最小内存量为   4   MB。  
   
  当   SQL   Server   动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQL   Server   根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在   4   MB   到   10   MB   之间。这就避免了   Microsoft   Windows   NT®   4.0   或   Windows®   2000   换页。如果有较少可用内存,则   SQL   Server   将内存释放给   Windows   NT   或   Windows   2000,后者通常继续使用可用列表。如果有更多可用内存,则   SQL   Server   将内存再提交到高速缓冲存储器。SQL   Server   仅在其工作负荷需要更多的内存时才增加高速缓冲存储器的内存;处于休眠状态的服务器不增大其高速缓冲存储器。  
   
  允许   SQL   Server   动态使用内存是推荐使用的配置;然而,可以手工设置内存选项并且可以禁止   SQL   Server   动态使用内存的能力。在设置   SQL   Server   使用的内存量之前,应确定适当的内存设置,方法是从全部物理内存中减去   Windows   NT   4.0   或   Windows   2000   以及   SQL   Server   的任何其它实例所需要的内存(以及其它系统使用的内存,如果该计算机不为   SQL   Server   专用)。这就是可以分配给   SQL   Server   使用的最大内存量。  
   
   
   
  说明     如果您已经安装并且运行了全文检索支持功能(Microsoft   检索服务,亦即   MSSearch),那么您必须手工设置   max   server   memory   选项,为   MSSearch   服务运行预留足够的内存。max   server   memory   设置必须与   Windows   NT   4.0   虚拟内存大小一起进行调整,以便使得保留给全文检索的虚拟内存是物理内存的   1.5   倍(不包括计算机中其它服务所需的虚拟内存)。应这样配置   SQL   Server   max   server   memory   选项,使得留有足够的虚拟内存满足全文检索内存需求。全部虚拟内存   -(SQL   Server   最大虚拟内存   +   其它服务需要的虚拟内存)>=   1.5   倍物理内存。  
   
   
  手工设置内存选项  
  手工设置   SQL   Server   内存选项有两种主要方法:    
   
  第一种方法,设置   min   server   memory   和   max   server   memory   为同一数值。该数值与分配给   SQL   Server   的固定内存量相对应。  
   
   
  第二种方法,把   min   server   memory   和   max   server   memory   数量设置到一个范围段内。这种方法在系统或数据库管理员希望配置   SQL   Server   实例,使其适应在同一台计算机上运行的其它应用程序的内存需求时很有用。    
  min   server   memory   保证了   SQL   Server   实例使用的最小内存量。SQL   Server   启动时不立即分配   min   server   memory   中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,SQL   Server   将无法从已分配的缓冲池中释放内存,除非减少   min   server   memory   值。  
   
   
   
  说明     不保证   SQL   Server   分配   min   server   memory   中所指定的内存量。如果服务器上的负荷从不需要分配   min   server   memory   中所指定的内存量,则   SQL   Server   将以较少的内存运行。  
   
   
  max   server   memory   则可防止   SQL   Server   使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQL   Server   启动时不立即分配   max   server   memory   中所指定的内存。内存使用随   SQL   Server   的需要而增长,直到达到   max   server   memory   中所指定的值。SQL   Server   无法超过该内存使用值,除非增加   max   server   memory   值。  
   
   
   
  重要     服务器启动时,在地址窗口扩展   (AWE)   内存模式下运行的   SQL   Server   实例确实分配   max   server   memory   中所指定的全部内存量。有关   AWE   内存的更多信息,请参见管理   AWE   内存。  
   
   
  在应用程序启动和   SQL   Server   释放内存之间将有一个较短的时间延迟,使用   max   server   memory   可以避免该延迟,从而可以提高其它应用程序的性能。仅当与   SQL   Server   共享同一台服务器的新应用程序在启动时显示有问题时,才设置   min   server   memory。最好让   SQL   Server   使用全部可用的内存。  
   
  如果手工设置内存选项,应确保适当地设置用于复制的服务器。如果服务器是一个远程分发者或者是一个出版者/分发者的组合,则必须为它分配至少   16   MB   的内存。  
   
  理想情况下,在不引起系统交换页面到磁盘的前提下,应尽可能多地分配内存给   SQL   Server。该值因系统不同而有很大差别。例如,在一个   32   MB   系统中,分配   16   MB   给   SQL   Server可能是合适的;在一个   64   MB   系统中,则可能适合分配   48   MB。  
   
   
   
  说明     当增大   SQL   Server   内存数量时,应确保有足够的磁盘空间来容纳操作系统虚拟内存的支持文件(Pagefile.sys)。有关虚拟内存支持文件的更多信息,请参见   Windows   NT   4.0   和   Windows   2000   文档。  
   
   
  指定的内存数量必需满足   SQL   Server   的静态内存(核心开销、打开的对象、锁等等)以及数据缓存(亦称高速缓存)的需要。  
   
  如有必要,在系统监视器(在   Windows   NT   4.0   中为性能监视器)中使用统计功能帮助调整内存值。应该只有在您添加或减少内存,或者改变系统使用方式时改变这些值。  
   
  虚拟内存管理器  
  Windows   NT   4.0   和   Windows   2000   随时提供一个   4   GB   的虚拟地址空间,其中较低的   2   GB   地址空间对于每个进程是专用的,并可由应用程序使用。较高的   2   GB   地址由系统保留使用。Windows   NT   Server   企业版为每个   Microsoft   Win32®   应用程序提供   4   GB   的虚拟地址空间,其中较低的   3   GB   地址空间是每个进程专用的,并可由应用程序使用。较高的   1   GB   地址由系统保留使用。    
   
  4-GB   的地址空间由   Windows   NT   V虚拟内存管理器(VMM)映射到可用的物理内存空间。取决于硬件平台的支持,可用的物理内存可以高达   4   GB。  
   
  Win32   应用程序(如   SQL   Server)只能识别虚拟(或称逻辑)地址,而不是物理地址。在给定的某一时刻一个应用程序使用多少物理内存由可用的物理内存和   VMM所决定。应用程序不能直接控制物理内存。  
   
  象   Windows   NT   4.0   或   Windows   2000   这样的虚拟地址系统允许过度提交物理内存,这使虚拟内存和物理内存的比率大于   1:1。因此,较大的程序可以运行在具有不同物理内存配置的计算机上。然而应用比组合平均工作集大得多的虚拟内存可能导致较差的性能。  
   
  SQL   Server   可以将内存锁定为工作集。因为内存被锁定了,当运行其它应用程序时可能出现内存不足的错误。如果出现内存不足的错误,则可能是分配给   SQL   Server   的内存太多。set   working   set   size选项(通过   sp_configure   或   SQL   Server   企业管理器设置)   可以使锁定内存为工作集功能失效。默认情况下,set   working   set   size   选项处于禁用状态。  
   
  手工配置给   SQL   Server   多于物理内存数量的虚拟内存会导致性能较低。而且,必须考虑   Windows   NT   4.0   或   Windows   2000   操作系统的内存需求(大约   12   MB,因应用程序的开销而略有不同)。当   SQL   Server   的配置参数上调时,系统的开销可能也会增长,因为   Windows   NT   4.0   或   Windows   2000   需要更多的常驻内存来支持附加的线程、页表等。允许   SQL   Server   to   动态使用内存可以避免内存相关的性能问题。  
   
  min   server   memory   和   max   server   memory   是高级选项。如果要使用   sp_configure   系统存储过程改变该选项,必须把   show   advanced   options   设置为   1,该选项立即生效(无需停止并重新启动服务器)。  

posted on 2007-10-08 17:44  徘徊中的海鸟  阅读(973)  评论(1编辑  收藏  举报