优化SQLServer数据库服务器内存配置的策略

日期: 2008-06-10 来源:TechTarget中国

  农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于WindowsNT4.0平台,采用客户/服务器模式,以Microsoft SQL Server为基础建立起来的大型数据库应用程式,系统界面友好、操作简便,计算、分析、检索功能很强大,为确保农业银行系统及时进行纵向和横向业务数据采集、按照不同需要生成统计报表,进行全面业务活动分析提供了强有力的保障。但在这套程式的推广、维护中笔者发现系统有时运行速度较慢,特别是在Win95客户端操作时尤为严重,经过排除网线连接等硬件可能带来的影响后上述问题仍然存在。笔者经过仔细摸索,发现系统对硬、软件的需要较高,为充分发挥设计效能,达到最好运作效果,需要对电脑硬、软件系统进行较为完备的性能测试和最好配置,特别是内存配置的好坏对系统的运行速度具备决定性的作用。下面,笔者就如何优化SQL Server数据库服务器的内存配置提出一些认识和看法。


  一、有关内存的基本概念


  1物理内存和虚拟内存


  WindowsNT使用两类内存:物理内存和虚拟内存。
  物理内存:作为RAM芯片安装在电脑内部的存储器。
  虚拟内存:用于模拟RAM芯片功能的磁盘(硬盘)空间,其实质是通过将内存中当前没有使用的部分内容临时存储到磁盘上,使系统能够使用到比机器物理内存更多的内存。


  2分页和分页文档


  WindowsNT系统通过使用磁盘空间使得对内存的需求得到部分缓解,从而使用到比物理内存更多内存的技术就称为“交换”或分页,也就是通常所说的虚拟内存技术。通常Windows NT 4.0系统安装时将在引导驱动器上配置一个大小为16MB的交换(分页)文档(pagefile.sys)。


  二、优化Windows NT 4.0系统内存配置


  在大多数情况下,为了充分发挥Windows NT 4.0系统效能,内存的作用比起处理器的处理能力更具备影响力,特别是在客户/服务器模式环境下更是如此,因为通常在这种环境下并不十分强调处理器的能力,相反却十分注重是否采用足够的内存来满足各个客户的应用需要。此外,为了获得容错功能和保护应用程式,确保应用程式高速运行、充分发挥设计功能都需要有足够多的内存,特别是工业绘图设计和各种工程应用程式更需要占用大量的内存来进行复杂的计算。


  物理内存(RAM)方便快速的长处显而易见,但由于其价格昂贵,也就不可能做到多多益善了,因此通过合理优化内存配置、扩充虚拟内存提高电脑运算速度也就成了一项很重要的应用技术手段。


  1、确保Windows NT系统基本内存需求


  Windows NT 4.0系统至小应配置12MB内存,16MB内存基本够用,正常情况下确保NT系统有32MB内存就能够了,因为并不是任何的16MB基本内存在任何时候都被同时使用。假如添加一些服务和应用程式,则对内存的需求就会急剧增大。如:


  (1)添加网络服务需要4MB内存空间;
  (2)容错功能和系统保护功能需要8MB内存(如磁盘映像和分条功能);
  (3)进行图像图象处理需要增加16MB内存空间;
  (4)安装VC、VB研发系统需要增加16MB内存空间;
  另外,如在Windows NT上构建大型数据库如SYBASE、Microsoft SQL Server等,对内存的需求就更多了。


  2、优化内存性能


  为了使WindowsNT不至于过分占用较多的内存或浪费处理器的时间用于换页,能够采用以下方法优化内存性能。


  (1)减少显示颜色的数量;
  (2)降低显示分辨率;
  (3)尽可能不使用或使用位宽度较小的墙纸;
  (4)关闭无需的服务程式或驱动程式,尽量不要在服务器上使用其他应用程式。


  停用服务或驱动程式的操作步骤如下:


  ①确定需要停用的服务或驱动程式的名称;
  ②从“控制面板”中双击“服务”或“设备”图标;
  ③在列表中选择想要停用的服务或设备驱动程式的名称,单击“停止”按钮,这时出现确认操作对话框;
  ④选择“是”确认操作,然后关闭对话框完成配置。


  3、优化虚拟内存


  在对Windows NT虚拟内存进行配置时需要合理确定各个驱动器分页文档的“起始大小”和“最大值”两个参数,他们用于指定分页文档的起始空间和最大空间。下面对这两个参数作一些解释:


  起始大小:指初始创建该分页文档时的文档大小,单位为MB,根据缺省配置,这个值被配置为系统中的物理内存的大小。


  最大值:指出该分页文档的最大尺寸,单位为MB。


  (1)分页文档的配置原则:


  ①分页文档起始大小应保留缺省配置,一般情况下请不要改变;
  ②分页文档理想的最大尺寸为系统物理内存尺寸的2.5倍至4倍。需要说明的是:假如系统工作时无需大量内存,请选择靠近下限的值,即用系统物理内存的2.5倍作为这个尺寸的起始值;假如系统工作时需要大量内存,请选择靠近上限的值。


  (2)Windows NT虚拟内存配置步骤:


  ①从“控制面板”中双击“系统”图标;
  ②在“系统特性”对话框中单击“性能”标签;
  ③在虚拟内存对话框中单击“更改”按钮,这时出现“虚拟内存”对话框,上端的驱动器框逐一列出了 Windows NT任何页面文档的大小;
  ④在驱动器列表中,选择需要配置分页文档的驱动器盘符,在“驱动器页面文档大小”对话框中列出了 “起始大小”和“最大值”两个参数栏,填入按照上面的原则确定的数值;
  ⑤单击“配置”确认以上操作,然后依次单击“确定”按钮退出各个对话框,完成配置。
  (3)Win95/98虚拟内存配置。
  Win95/98虚拟内存配置方法、步骤和原则和Windows NT 4.0的配置大致相同,请参照上面Windows NT的配置。


  4、注意事项


  (1)合理确定分页文档的最大值,根据系统需求随时进行调整,使用过多虚拟内存将导致整个系统处理性能的下降。配置虚拟内存最大值的目的是使用户不必在WindowsNT的交换文档上消耗过多的磁盘空间,通常情况下假如超过了系统需要的最好值后,生成交换文档的磁盘空间就被浪费了。


  (2)尽可能设立专用硬盘配置内存交换区,或将交换空间放到主硬盘的另一个分区,同时应将主硬盘的交换文档大小降至16MB,这样主硬盘(分区)仅用来放置操作系统和应用程式,就能够减少交换次数,防止频繁交换耗费大量 CPU时间。


  (3)虚拟内存技术的确改善了Windows NT系统的性能,但也受到机器硬盘空间大小、硬盘速度、处理器 (CPU)速度的影响,从理想角度出发,要提高电脑的性能就必须减少交换操作的次数,但是没有一个WindowsNT电脑不发生交换,这就需要电脑要有足够的物理内存,以保持最少的交换操作。


  三、优化Microsoft SQL Server数据库内存配置


  内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装时将为具备32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可用内存。应在Microsoft SQL Server数据库安装后进行内存选项(Memory)配置,最大配置值为2GB。


  为了确定SQL Server系统最适宜的内存需求,能够从总的物理内存中减去Windows NT4.0需要的内存连同其他一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能多的内存,而不产生页面调度。


  1、根据物理内存合理规划SQL Server可用内存


  在大多数的生产环境中,服务器配备的物理内存是64MB~128MB,偶尔也有256MB的,只要配置恰当是完万能够满足SQL Server的内存需求的。下表是笔者关于SQL Server内存分配的建议规划,供参考。



  物理内存 分配给SQL Server 配置值(单位:2KB)
  8MB 4MB 2048
  16MB 8MB 4096
  32MB 16~18MB 8192~9216
  48MB 28~34MB 14336~17408
  64MB 40~46MB 20480~23552
  128MB 100~108MB 51200~55296
  256MB 216~226MB 110592~115712
  512MB 464~472MB 237568~241664


  以下是SQL Server内存选项(Memory)配置方法


  (1)从Microsoft SQL Server程式集中启动SQL Enterprise Manager;
  (2)从Server Manager窗口中选择“Server”菜单选项;
  (3)在“Server”菜单中选择“Configurations”选项;
  (4)在“Server Configuration”对话框中选择”Configuration”标签,Configuration窗口显示配置选项列表;
  (5)选中“Memory”项目,在“Current”栏填入新值;
  (6)停止并重新启动SQLServer服务,使配置生效。


  2、合理扩充虚拟内存、增大SQL Server可用内存


  当SQL Server系统确实需要扩大可用内存时,应在磁盘空间充足的情况下扩充供虚拟内存,并相应增大 SQL Server可用内存。具体做法是,系统管理员首先扩充服务器的虚拟内存,然后再参考上表增大SQL Server可用内存,关键是要根据系统的负载情况综合决定是否扩充内存、优化配置。


  3、使用tempinRAM


  SQL Server使用tempdb临时数据库作为一些查询连接操作时排序或创建临时表的工作空间。将tempdb创建在RAM中能够使系统操作性能有较大提高,而且因为tempdb在每次重启动服务器时都重建,这样即使有非正常的关闭也是较为安全的,例如停电故障。要将tempdb创建在RAM中,能够使用sp_configure进行配置,具体用法请参阅有关资料。


  由于tempdbinRAM使用的内存是由系统从内存体单独分配的,和SQL Server的内存选项配置的可用内存池是分开的,使用tempdbin RAM将减少整个系统的可用内存,应根据SQL Server和服务器运行情况进行配置,否则就可能适得其反,影响系统性能。另外,适当增加tempdb数据库空间,即使不使用tempdbin RAM,也能够提高数据库的运行速度。


  4、注意事项


  (1)建议在生产环境中SQL Server不要配置小于32MB内存,而且数据库服务器上尽量不要运行其他应用程式;


  (2)扩充供虚拟内存、增大SQL Server可用内存,应考虑物理内存使用状况和磁盘空间许可情况;


  (3)在可能的情况下,要为系统留有部分额外的内存,这样在服务器上打开一个服务或添加一个进程且不改变SQL Server内存配置时,不致于使NT服务器的运行速度受到影响(变得很慢),一般认为最小为2MB最大为20MB。


  四、巧用内存配置,解决统计服务器问题


   一单位的统计服务器投入使用后,运行速度较慢,经排查原因,发现SQLServer中的内存选项(Memory)仅为安装缺省值——16MB(而服务器有128MB的物理内存),在将内存值调整为100MB时却误将其改成了 1000MB,使得SQL Server服务不能启动,统计数据库打不开,也就不能再次进入SQL Enterprise Manager修改内存配置了。由于近期未备份业务数据,不到万不得已不能重装SQLServer数据库,就试图用命令行参数命令来重新启动SQL Server服务,但均不能奏效,陷入了困境。我们经过仔细分析提出:既然SQL Server可用内存配置值远远大于物理内存,造成SQLServer服务不能启动,何不扩充虚拟内存呢?经设法将机器虚拟内存扩充至1000MB并重新启动,SQL Server数据库成功启动,问题迎刃而解。


  五、结束语


  现在,大多数单位投入使用的Microsoft SQL Server数据库服务器的物理内存一般都在64MB以上,如农业银行省、市分行的统计服务器配备128MB物理内存,只要按照上面提出的方法合理规划、优化NT和SQL Server的内存配置,使配置尽可能达到最优,应用系统就一定能够充分发挥设计功能、满足业务需求

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐