2009-06-29 64 views
2

我正在管理运行IIS和SQL 08 express的共同位置的winserver08盒子。我碰巧看了一下任务管理器的性能选项卡,发现'mem使用历史记录图已经接近完成读取1.8演出(我有2演出物理ram)。进程显示sqlserver运行在940,000K--迄今为止最大的消费者。SQL内存使用

我是一个低容量的网站 - CPU利用率几乎没有注册。根本没有任何服务器的稳定性问题。这是SQL如何处理可用的内存或者我应该深入挖掘?

thx

回答

5

SQL Server管理它自己的内存池。它会在内存压力下将内存释放回操作系统。

所以,是的,这是正常的行为,没有什么值得关注的。

注:我要提到一个例外:如果TSQL脚本使用由sp_OACreate创建COM对象,而不是释放与相应的sp_OSDestroy对象(比如,例如出现错误和脚本过早终止)那么内存可能会泄漏。使用这些存储过程并不常见(很多DBA不允许打开此功能,理由很充分),我相信对于未被释放的CURSORS也是如此。

0

除非你配置了这是正常的行为。阅读this article以清楚了解内存配置和建议。

在你的情况,我假设你有默认设置,你看到的是正常的,没有理由担心。

拉吉

0

请考虑SQLEXPRESS可能管理内存相比,以任何标准版不同的方式(即,任何非Express版)。 我无法提供具体的链接,但是从个人经验来看,当您转向SQLServer的正确分发(速度,内存管理,极端情况下的响应等)时,事情会发生很大变化。

如果有人知道更多请综合我的答案。

0

如果没有上限,SQL Server将在机器内存的90%的区域内使用某些东西。这是完全正常的,因为SQL Server为自己管理内存,并会根据需要释放内存。

如果您担心这个问题,可以通过转到sqlexpress实例的属性来限制SQ​​L Server可以使用的内存量,选择内存页面,然后减少最大服务器内存。

+0

作为一般规则,你不应该在没有真正知道你在做什么的情况下限制SQL上的RAM。根据原来的问题,建议改变上限可能不是最好的答案。在触摸此选项之前购买更多内存 - 特别是考虑到SQL Express已经有1个演出限制。 – 2009-06-29 16:02:26