我遇到了一个 SQL Server 实例及其内存使用问题。
问题是,即使服务器最大内存选项设置为 10 GB,当我查看任务管理器时,sqlserver.exe 进程所用的内存从未超过 200MB。
在同一台服务器(Windows Server 2008)中,有另一个以类似方式配置的 sqlserver 实例,并且那里没有发生这种情况(运行相同的查询和作业会分配更多的内存)。
您知道我该怎么做才能解决这个问题吗?
答案1
首先,您运行的是哪个版本的 SQL Server?是 SQL 2000、2005 还是 2008?是标准版、MSDE、企业版还是 Express 版?
它是 32 位还是 64 位操作系统?
如果您使用的是 32 位系统,则在没有 AWE 的情况下,您将无法获得超过 2+GB 的内存。我建议您查看一些资源:
http://msmvps.com/blogs/bradley/archive/2009/01/15/how-to-troubleshoot-sql-server-memory-related-issues-part-1.aspx http://www.mssqltips.com/tip.asp?tip=1268
如果您使用的是 SQL 2000,请确保这不是问题:http://support.microsoft.com/kb/899761/en-us
另外,您确定您正在检查服务器上的正确实例吗?
答案2
例如,这是 SQL Server 2000 中的一个已知错误。请参阅我的问题:
答案3
MS SQL Server 有多种限制,具体取决于版本/许可证。运行两个 SQL Server 实例可能会有更多限制。尝试在 Microsoft 网站上搜索其限制。
答案4
运行 perfmon 并从 SQLServer 内存管理器列表中为相关实例选择以下计数器:
目标服务器内存 服务器总内存
总服务器内存将准确地告诉您 SQL 服务器实例的缓冲区缓存使用了多少内存。
我预计目标服务器内存将显示 10GB(假设您的环境是 64 位或 32 位,并且启用了 AWE)。如果 SQL 实例运行一段时间后,总数远小于目标,那么我预计实例上数据库的累计大小小于 10GB?或者可能自上次重新启动实例以来数据库表/索引没有被触及(为确保触及每个表,请尝试对数据库运行 DBCC checkdb)。