我正在管理一个同时运行IIS和SQL 08 express的winserver08盒子。我刚刚看了一眼任务管理器的性能选项卡,发现'内存使用历史图表已接近顶部读取1.8 gig(我有2 gig物理内存)。进程显示sqlserver以940,000K运行 - 迄今为止最大的消费者。
我是一个低容量网站 - cpu利用率几乎没有注册。根本没有服务器的任何稳定性问题。这是SQL如何处理可用内存,还是我应该深入挖掘?
THX
答案 0 :(得分:5)
SQL Server管理它自己的内存池。它会在内存压力下将内存释放回操作系统。
所以,是的,这是正常行为,无需担心。
注意:我应该提到一个例外:如果TSQL脚本使用sp_OACreate来创建COM对象而不释放具有相应sp_OSDestroy的对象(例如,发生错误和脚本过早终止),然后内存可能泄漏。使用这些存储过程并不常见(许多DBA不允许打开此功能,理由很充分)我相信对于未解除分配的CURSORS也是如此。
答案 1 :(得分:0)
答案 2 :(得分:0)
考虑到与任何标准版本(即任何非快速版本)相比,SqlExpress可能以不同的方式管理内存。 我无法提供具体的链接,但从个人经验来看,当你转向适当的SQLServer分发(速度,内存管理,极端条件下的响应等)时,事情会发生很大的变化。
如果有人知道更多信息,请整合我的答案。
答案 3 :(得分:0)
如果没有上限,SQL Server将在机器内存的90%区域内使用某些内容。这是完全正常的,因为SQL Server正在为自己管理内存,并将根据需要释放内存。
如果您担心它,可以限制SQL Server可以使用的内存量,通过转到sqlexpress实例的属性,选择内存页面,然后减少最大服务器内存。