首页 > 数据库 > SQL Server > 正文

揭秘SQL Server服务器内存管理问题

2024-08-31 00:46:51
字体:
来源:转载
供稿:网友
如果同时在一台SQL Server服务器安装多个系统,比如一个SQL Server数据库系统和一个邮箱服务系统,常常会出现另一个系统即邮箱系统应用服务性能下降的问题。

一、原因分析。
在SQL Server数据库启动的时候,数据库系统会根据物理内存的大小来动态的增大或者缩小高速缓冲区的容量。这主要是为了提高SQL Server服务器的性能才如此的设计的。
我们知道,一般情况下,高速缓冲区越大,则SQL Server服务器的性能越好。这主要是因为有些用户查询过的数据都可以放在高速缓冲区(即内存的其中一部分)中。如此的话,当用户下次再次需要这些数据的时候,就不用到硬盘中去读取,而直接在内存中读取即可。而从内存中读取数据要比在硬盘中读取速度要快的多。
所以,只要当服务器的可用内存在4MB与10MB之间的话,数据库系统就会把它的高速缓冲区不断的扩大。如此的话,当邮箱服务器突然需要用到比较大的内存,如对邮箱进行备份或者有用户群发邮件的时候,就会报错说“内存分配不足”。
故一般只是内存升级,往往不能够解决SQL Server服务与其他应用服务抢占内存的情况。为了让SQL Server能够与其他应用服务友好的共处,数据库管理员还需要对内存进行合理的分配,限制SQL Server数据库服务内存的占用率。

二、解决方法。
一是合理地给SQL Server数据库分配内存。而是不要把SQL Server服务跟其他应用服务放在同一台服务器上,毕竟数据库服务的并发行访问比较多,对服务器的性能要求比较高。
若果企业选择第一种应对措施的话,就需要限制SQL Server服务器的内存使用率。为了使得运行在同一台服务器的SQL Server服务器与邮箱服务能够达到一个合理的性能,能够和平共处,就需要采取一定的措施限制SQL Server数据库服务的内存使用量。在SQL Server服务器中,专门提供了一个工具(数据库引擎),可以用来帮助我们干预SQL Server服务器的内存分配。
具体的说,可以按如下方法进行配置。

第一步:打开SQL Server企业管理器。
在SQL Server数据库中,提供了一个图形化界面的企业管理器。在这个管理平台上可以对SQL Server的大部分服务进行管理与配置。SQL Server数据库服务的内存分配规则当然也不例外,可以在这里进行调整。
第二步:找到我们需要调整的服务器。
有些企业,可能在网络中部署了多个SQL Server服务器。为了管理的方面,会在其中一台服务器上的企业管理器中集中进行管理。不过,这家企业他们只有一个SQL Server服务器。在我们需要调整的服务器上,右键单击,选择“属性”。然后就会弹出一个对话框。在对话框中选择“内存选项卡”。在这里就可以对数据库应用服务的内存分配方法进行设置。
第三步:调整相关的内存参数。
在这张选项卡中,一般有两个参数,分别为最小服务内存与最大服务内存。在实际工作中,我们往往有两种配置方法。

一是配置一个最大最小内存。即给SQL Server数据库应用服务设置一个最大的使用内存。如此的话,在这个最大的范围之后,数据库系统会根据实际情况,在最大内存范围之内对内存的分配进行调整。一般情况下,最小内存我们可以不设置,只对最大内存进行限制即可。这就给数据库一种自主选择的权利。可以提高内存的使用效率。
二是固定内存分配。即把“最小服务内存”与“最大服务内存”两个参数设置为相同。如此的话,不管数据库服务需要多大的内存,在服务器启动的时候,操作系统都会给其预留这么大的内存。其他的应用程序及时内存再怎么不足,也不会跨越数据库的内存领地。很明显,这种方式虽然保证了数据库服务的内存需求,但是,内存的使用率并不是很高。
针对上面两种方法,笔者比较倾向与使用第一种配置,即只对数据库应用服务的最大内存使用率进行限制。只要不超过这个范围,则服务器可以自主的进行调解。那么这个最大的使用率设置成多少合适呢?这主要要看企业所部属的服务了。由于这家企业,在同一台服务器上运行了邮箱服务器与数据库服务器,可能对硬件的压力比较大。因为这两个应用服务,都涉及到比较多的并发访问。所以,即使把硬件升级成了2G,估计也不能够给数据库服务分配比较多的内存。一般来说,并发性访问越多,则最好能够给其配置比较多的内存。
配置完成之后,不用重新启动,这个规则就会起效。不过笔者还是建议把SQL Server服务重新启动一下。在可以的情况下,把服务器重新启动一下最好。如此的话,操作系统就会根据这个规则,对内存进行重新的调整分配。也可以让SQL Server服务器更好的队内存进行合理的安排。如可以把SQL Serve可用内存固定在一个连续的区域内,以提高数据库的性能。

三、总结。 
一是硬件升级只是数据库服务器性能提升的一个充分条件,而不是必要条件。也就是说,硬件的升级并不一定会导致服务器性能的提升。在硬件升级的同时,往往也需要调整相关的配置。让硬件升级的优势得到极大的发挥。笔者认为,有时候服务配置比纯粹的硬件升级更加重要。一些经验不足的网络管理人员只知道升级硬件,而忽视了服务的调整配置。他们这是走进了一个死胡同,效果往往不能够达到他们的预期。
二是一些并发性比较大的应用服务器,最好不要放在同一个服务器上。现在企业基于服务器、客户端模式的管理软件应用越来越多。这种模式一个显著的特点,就是并发性访问比较频繁,给应用服务器带来了很大的压力。在一些性能要求比较高的企业,它们把数据库与前台的应用程序服务器都分开放置,以求优化服务器的性能。而且,现在服务器价格已经逐渐能够被企业所接受。笔者认为,企业没有必要在这方面省钱。若多个应用服务并发性访问比较多的情况下,则最好考虑把他们部署在不同的服务器上。以提高各个应用服务的性能。
三是在同一个服务器上部署多个应用服务的话,要考虑应用服务的稳定性,可能的话最好还是能够分开部署。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表