我们注意到,对于我们的一个具有以下配置的 SQL 服务器,内存没有得到分配。
SQL 服务器 2005 SP4,32 位
Windows server 2003 R2 SP2,32 位,16 GB RAM 和 12 个内核
此外,我们还启用了 AWE 和 PAE。
Min server memory = 1024
Max server memory = 13500
我知道任务管理器不是最好的方法,但 RAMMAP 也不起作用,但我们相信 SQL 没有使用分配的内存。
请告知可以在这里做什么,或者我的 AWE 配置不正确?
你有一个奇怪的系统。您的数据库大小为 350+ G,并且您拥有 32 位系统我会说这是一个我永远不想在我的环境中拥有的系统。在 32 位 SQL Server 上管理 350 G 数据库非常困难,它的 VAS 限制(默认)为 2 G。你一定会面临内存压力。
32 位系统中的 AWE 仅允许 SQL Server 使用超出其 VAS 功能的内存,并且也只有数据和索引页可以利用 AWE 的额外内存。计划缓存、过程缓存和其他缓存无法使用此内存。
这不清楚,您所说的相信是什么意思,您能否展示一些事实,您是如何得出 SQL Server 没有使用内存的结论的。请运行
命令并在某些共享链接(onedrive,dropbox ...)上共享输出并将链接发布到您的问题中,以便我们可以看到 SQL 服务器正在使用多少内存。
编辑:
这是你正在做的不正确的事情。任务管理器不是查看 SQL Server 内存利用率的地方,我们有 dbcc memorystatus 输出和 perfmon 计数器来查看 SQL Server 2005 内存利用率。如果您注意到任务管理器显示
Process private bytes
此内存是可分页的,但通过 32 位 AWE API 分配的内存已锁定且不可分页且不可共享。所以任务管理器没有显示 SQL Server 使用的总内存,因为它没有跟踪通过 AWE 分配的内存。所以我想你现在明白了。请阅读 AWE 它是如何在 32 位中运行的。现在从您发布的 dbcc memorystatus 转储
Memory utilized by SQL Server 2005 would be sum of VM committed and AWE Allocated.
这不会给你绝对的价值,但它是正确的。还有一些未包含在其中的分配,但这只是几 MB,几乎没有关系所以 SQL Server 使用的内存是 (169000+13762560)KB 大约 13G。与您设置的最大服务器限制相匹配。所以不用担心 SQL Server 正在使用分配给它的内存。
另外,无论结果如何,请升级到 Windows 服务器和 SQL Server 的 64 位版本