做一个项目,我们需要先稳定,然后再升级。
我们在 64 位 Windows 2008 标准服务器上安装了 32 位企业版 SQL Server 2005。
服务器安装了 64GB RAM,但是在 taskmgr 中只有 32GB 可用。我相信这是一个标准的 Windows Server 限制,只是想确认一下。
另一方面,我们检查了 perfmon 上的 SQL Server 内存计数器,我们得到的目标内存和总内存的值约为 3.500.000,所以我猜 SQL Server 使用了大约 3,5GB??
我想问一下我们需要进行哪些配置才能让 SQL Server 使用尽可能多的内存,希望是 28 GB,为操作系统留出 4GB,因为我们在这台机器上没有其他服务。
到目前为止,这是我的计划,但由于它是一个生产环境,我最好一次尝试就搞定它,因为不想多次停止服务:
服务帐户是 Local System,但我在 SQL Server 日志中看不到“Using locked pages for buffer pool”。我是否需要切换到另一个用户帐户才能利用“内存中的锁定页面”策略?我在 SQL Server 日志中看到的是:“使用动态锁分配。每个节点初始分配 2500 个锁块和 5000 个锁所有者块。这只是一条信息性消息。不需要用户操作。”
Max 服务器内存属性设置为 10240;我认为在内存中启用锁定页面后,我需要将其增加到 28000
由于这是 64 位操作系统,因此无需启用 AWE。但是,在 SQL Server 日志中,我可以看到这条消息:“在配置参数中将 AWE Enabled 设置为 1 以允许使用更多内存。”
为了为 SQL Server 启用更多内存,我还需要考虑其他什么?
您是正确的 Windows Server 2008 Standard 的最大内存限制是 32 GB。Windows Server 机器的内存限制中提到了这一点。
当 32 位 SQL Server 安装在 64 位机器上时,它被调用
WOW System
。为此,虚拟地址空间限制为 4GB。在正常和默认配置中,SQL Server 无法看到/使用超过 VAS 限制的内存,因此您在 Perfmon 计数器中看到 3.5 GB。由于您使用的是 32 位系统,因此您不应查找此消息,而应查找“地址窗口化扩展已启用”,如果您看到此消息,则表明它已启用。如果您有 64 位系统,那么消息“Using Locked pages for buffer pool”就有意义了。实际上这就是 AWE 分别在 32 位和 64 位中工作的方式。
不,这对于 64 位 SQL Server 是正确的,如果你有 32 位 SQL Server 则不是。
现在,要让 SQL Server 看到更多内存,您必须启用 AWE,这样 SQL Server数据和索引页才能看到超过 4 GB 的内存。由于您的窗口可以看到超过 4 GB(在您的情况下为 32 GB),AWE 将帮助 SQl Server 数据和索引页面访问更大的内存部分。请注意我提到了数据和索引页面,除此之外没有其他内存消费者可以看到那些额外的内存。
PS:在写答案的时候大部分
blogs.msdn
链接都打不开了,因为他们正在迁移到新平台,我会在他们开始工作后尽快将链接添加到答案中,以便您阅读时有一些参考