我正在管理运行IIS和SQL 08 express的共同位置的winserver08盒子。我碰巧看了一下任务管理器的性能选项卡,发现'mem使用历史记录图已经接近完成读取1.8演出(我有2演出物理ram)。进程显示sqlserver运行在940,000K--迄今为止最大的消费者。SQL内存使用
我是一个低容量的网站 - CPU利用率几乎没有注册。根本没有任何服务器的稳定性问题。这是SQL如何处理可用的内存或者我应该深入挖掘?
thx
我正在管理运行IIS和SQL 08 express的共同位置的winserver08盒子。我碰巧看了一下任务管理器的性能选项卡,发现'mem使用历史记录图已经接近完成读取1.8演出(我有2演出物理ram)。进程显示sqlserver运行在940,000K--迄今为止最大的消费者。SQL内存使用
我是一个低容量的网站 - CPU利用率几乎没有注册。根本没有任何服务器的稳定性问题。这是SQL如何处理可用的内存或者我应该深入挖掘?
thx
SQL Server管理它自己的内存池。它会在内存压力下将内存释放回操作系统。
所以,是的,这是正常的行为,没有什么值得关注的。
注:我要提到一个例外:如果TSQL脚本使用由sp_OACreate创建COM对象,而不是释放与相应的sp_OSDestroy对象(比如,例如出现错误和脚本过早终止)那么内存可能会泄漏。使用这些存储过程并不常见(很多DBA不允许打开此功能,理由很充分),我相信对于未被释放的CURSORS也是如此。
请考虑SQLEXPRESS可能管理内存相比,以任何标准版不同的方式(即,任何非Express版)。 我无法提供具体的链接,但是从个人经验来看,当您转向SQLServer的正确分发(速度,内存管理,极端情况下的响应等)时,事情会发生很大变化。
如果有人知道更多请综合我的答案。
如果没有上限,SQL Server将在机器内存的90%的区域内使用某些东西。这是完全正常的,因为SQL Server为自己管理内存,并会根据需要释放内存。
如果您担心这个问题,可以通过转到sqlexpress实例的属性来限制SQL Server可以使用的内存量,选择内存页面,然后减少最大服务器内存。
作为一般规则,你不应该在没有真正知道你在做什么的情况下限制SQL上的RAM。根据原来的问题,建议改变上限可能不是最好的答案。在触摸此选项之前购买更多内存 - 特别是考虑到SQL Express已经有1个演出限制。 – 2009-06-29 16:02:26