使用 MSSQL 的 WP 站长朋友都会被 MSSQL 资料库吃内存的能力佩服得五体投地, 一个小小的网站, 执行若干天之后,MSSQL 就会把站群服务器上所有的内存都吃光, 此时你不得不重新启动一下站群服务器或 MSSQL 来释放内存, 有人认为是 MSSQL 有内存泄露问题, 其实不然, 微软给我们了明确说明:
在您启动 SQL Server 之后,SQL Server 内存使用量将会持续稳定上升,即使当站群服务器上活动很少时也不会下降。另外,工作管理员和效能监视器将显示计算机上可用的实体内存稳定下降,直到可用内存降到 4 至 10 MB 为止。
仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。
预设情况下,SQL Server 根据操作系统报告的实体内存载入动态增大和收缩其缓冲池(WordPress 加速缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。像在与 SQL Server 分配内存位于相同计算机上的其他程序一样,SQL Server 缓冲区管理器将在需要的时候释放内存。 SQL Server 每秒可以释放和获取几兆位元组的内存,从而使它可以快速适应内存分配变化。
更多资讯
您可以通过站群服务器内存最小值和站群服务器内存最大值配置选项设定 SQL Server 资料库引擎使用的内存(缓冲池)量的上下限。在设定站群服务器内存最小值和站群服务器内存最大值选项之前,请查阅以下 Microsoft 知识库文章中标题为” 内存” 一节中的参考资讯:
319942 HOW TO:Determine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设定)
请注意,站群服务器内存最大值选项只限制 SQL Server 缓冲池的大小。站群服务器内存最大值选项不限制剩余的未保留内存区域,SQL Server 准备将该区域分配给其他元件,例如扩充套件储存过程、 COM 物件、以及非共享 DLL 、 EXE 和 MAPI 元件。由于前面的分配,SQL Server 专用位元组超过站群服务器内存最大值配置是很正常的。有关此未保留内存区域中分配的其他资讯,请单击下面的文章编号,以检视 Microsoft 知识库中相应的文章:
316749 PRB:在使用大量资料库时可能没有足够的虚拟内存
参考
SQL Server 联机图书;主题:” 站群服务器内存最小值和最大值的影响”;” 内存体系结构”;” 站群服务器内存选项”;”SQL Server 内存池”
下面我们就来实战如何限制 MSSQL 内存使用:
第一步: 开启企业管理双击进入要修改的 MSSQL.
第二步: 在左侧 MSSQL 上点选右键, 选择属性, 弹出 SQL Server 属性 (配置) 对话方块
第三步: 点选内存选项卡.
在这里, 你会看到 MSSQL 预设设定为使用最大内存, 也就是你所有的内存, 根据你的需要, 设定它的最大值吧.
第五步: 设定完毕,关闭 MSSQL 服务再重启,配置即可生效!