沿着这条线有许多问题 - 但它们有时相互矛盾,或者没有展示如何正确验证一切都在实际工作 - 希望这可以是全面的......
我在 Windows Server 2003 R2 Standard 上运行 SQL Server 2005 SP3 Standard。我的服务器安装了 8GB 内存 - 我的系统几乎完全用作数据库服务器 - 上面运行了一些服务,但 OS + 服务可以在 1Gb 的 RAM 内运行。
我做了什么(如果我做错了请告诉我):
- /3GB 在 boot.ini 中。(增加可用的用户空间内存量 - info)
- /PAE 在 boot.ini 中。(不知何故,即使没有这个开关,Windows 也声称正在执行 PAE。)
- 在 SQL Server 中启用 AWE。
- 为用户系统和本地服务启用内存选项中的锁定页面。(信息)。SQL Server Standard 似乎直到 Cumulative Update 4 才使用这个,它没有安装在我的服务器上。(资料)
- 将最小/最大内存设置为:1024Mb/5112Mb
完成上述所有操作后,我们肯定看到了一定程度的改进——但我现在想验证我的设置,确保我充分利用了可用内存。(当 max = 7Gb 时似乎出现了放缓,所以我从那个值逐渐下降,但它可能只是感性的。)
为了验证,我检查了 PerfMon 中的以下级别:
- 进程(sqlserv):工作集:76386304
- SQL Server(内存管理器):总服务器内存:3538944(我看到一个文档指出这不是 SQL Server 使用的全部内存,所以我不确定是否信任它)
所以——我的问题...
- 我的最大值应该在 7Gb 左右吗?如果不是,应该是什么?
- 为什么在分配 5G 时,总服务器内存为 3.5G?
- 分配给 SQL Server 的内存量的正确度量是什么?工作集似乎有点大......
- 我可能错过了设置中的任何步骤吗?
- 现在开始调整缓存系统有什么推荐的资源吗?
谢谢
您将无法在 Windows 2003 Standard 中使用 AWE。您需要 Enterprise,请参阅Windows Server 2003 和 Windows 2000 中提供大内存支持:
您看到的工作集是 7MB,而不是 7GB。这是进程的正常工作集,因为工作集不测量分配给进程的内存量,而只测量总是小得多的工作集:
您需要查看
Process\Virtual Bytes
:SQL Server 内存为 3GB,这是它在带有 /3GB 开关的 Windows Standard 上可以分配的全部内存。
因此,您需要购买 Enterprise Windows 许可证,或者只是迁移到 64 位操作系统和 64 位 SQL 部署(这确实是唯一明智的选择)。
如果没有 64 位操作系统,您将无法使用全部 8GB 内存。
财政年度:
对于 32 位的 Windows 2003 标准版,最大内存限制为 4GB。
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx