这可能听起来像是一个奇怪的问题,但我有点担心我们的主要数据库服务器没有利用所有可用的内存。这是一个 32 位 Windows 2003/SQL Server 2005 标准部署。它是该框上运行的唯一实例,并且仍然应用默认内存限制设置。该服务器有 4GB RAM 并已启用 AWE。我们最近收到了数据库运行缓慢的报告,所以我继续查看服务器。我很惊讶地发现 sqlserver.exe 进程仅使用(并且已达到峰值)137MB RAM。我们有多个 SharePoint 场、几个面向互联网的网站和多个内部应用程序,所有这些都从这一个数据库服务器运行,我预计它使用的 RAM 会比这多得多。
由于不知道更好的测试方法,我编写了一个 SQL 查询,创建了一个临时表并插入了一些大字符串数百次(实际上我首先是一名开发人员,其次是一名管理员)。当我在本地机器上运行此查询时,内存使用量上升到近 2GB。在所有其他服务器上,内存使用量都有明显增加。然而,在我们的生产服务器上,内存根本没有变化 - 它保持在大约 137MB(处理器使用率上升了,所以肯定有影响)。
总而言之,我对此有点困惑,希望有人能够对此作出解释?
答案1
使用 AWE,您不会在进程列表中看到 SQL Server 的真实 RAM 使用情况(因为 AWE 映射内存的方式)。您需要进入性能监视器并从那里查看(我忘记使用哪个 SQL 计数器,但它应该在 下SQLServer:Memory Manager
)。
答案2
您可以尝试在 SQL Server 中手动设置内存限制。
答案3
sp_configure'最小服务器内存',1024
重新配置
去
sp_configure'最大服务器内存',4000
重新配置
去
应该会使内存使用量上升。