有许多类似这样的问题 - 但它们有时要么互相矛盾,要么没有显示如何正确验证一切是否正常 - 希望这可以是全面的......
我在 Windows Server 2003 R2 Standard 上运行 SQL Server 2005 SP3 Standard。我的服务器安装了 8GB 内存 - 我的系统几乎完全用作数据库服务器 - 它们上运行着一些服务,但操作系统 + 服务可以在 1GB RAM 内运行。
我做了什么(如果我做错了,请告诉我):
- /3GB。(要增加可用的用户空间内存量 -信息)
- boot.ini 中的 /PAE。(Windows 声称即使没有此开关,也能执行 PAE。)
- 在 SQL Server 中启用 AWE。
- 为用户系统和本地服务启用内存页面锁定选项。(信息)。SQL Server Standard 似乎直到累积更新 4 才使用此功能,而我的服务器上尚未安装该更新。(信息)
- 将最小/最大内存设置为:1024Mb/5112Mb
完成上述所有操作后,我们确实看到了一定程度的改进 - 但我现在想验证我的设置,确保我充分利用了可用的内存。(当最大值 = 7Gb 时似乎速度变慢了,所以我偏离了该值,但这可能只是感知上的。)
为了验证,我检查了 PerfMon 中的以下级别:
- 进程(sqlserv):工作集:76386304
- SQL Server(内存管理器):服务器总内存:3538944(我看到一份文档指出这不是满的SQL Server 使用的内存,所以我不确定是否信任它)
所以——我的问题是……
- 我的最大容量应该在 7Gb 左右吗?如果不是,应该是多少?
- 为什么服务器总内存为 5G,但实际只有 3.5G?
- 分配给 SQL Server 的内存量的适当指标是什么?工作集似乎有点大……
- 我是否可能遗漏了设置过程中的某些步骤?
- 关于现在开始调整缓存系统,有没有什么推荐的资源?
谢谢
答案1
您将无法在 Windows 2003 Standard 中使用 AWE。您需要 Enterprise,请参阅Windows Server 2003 和 Windows 2000 均支持大内存:
PAE 是 IA32 处理器新增的功能,用于处理超过 4 GB 的物理内存。以下操作系统可以使用 PAE 来利用超过 4 GB 的物理内存:
* Microsoft Windows 2000 Advanced Server * Microsoft Windows 2000 Datacenter Server * Microsoft Windows Server 2003, Enterprise Edition * Microsoft Windows Server 2003, Datacenter Edition
要启用 PAE,请使用 Boot.ini 文件中的 /PAE 开关。
您看到的工作集是 7MB,而不是 7GB。这是进程的正常工作集,因为工作集不衡量内存量已分配到某个进程,但只有工作集它总是小得多:
显示此进程工作集中的当前字节数。工作集是进程中的线程最近接触的内存页面集。如果计算机中的可用内存超过某个阈值,即使页面未被使用,也会留在进程的工作集中。当可用内存低于某个阈值时,页面将从工作集中删除。如果需要这些页面,则在离开主内存之前,会通过软故障将它们重新放回工作集中。
你需要看看Process\Virtual Bytes
:
显示进程正在使用的虚拟地址空间的当前大小(以字节为单位)。使用虚拟地址空间并不一定意味着相应地使用磁盘或主内存页面。虚拟空间是有限的,如果使用过多,进程可能会限制其加载库的能力。
SQL Server 内存为 3GB,这是它在 Windows 标准上使用 /3GB 开关可以分配的全部内存。
因此,您需要购买企业版 Windows 许可证,或者简单地转移到 64 位操作系统和 64 位 SQL 部署(这实际上是唯一明智的选择)。
答案2
如果没有 64 位操作系统,您将无法使用全部 8GB 内存。
答案3
马其顿共和国:
对于 32 位 Windows 2003 标准版,最大内存限制为 4GB。
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx