SQL Server 2005(32 位)的双实例允许我使用 >4GB RAM 吗?

SQL Server 2005(32 位)的双实例允许我使用 >4GB RAM 吗?

有人在具有 16GB RAM 的 64 位操作系统上安装了 32 位版本的 MS SQL Server 2005。两个 SQL Server 实例正在运行,但每个进程仅使用大约 1.7GB 的 RAM。合计起来大约相当于 3.2GB,即 32 位应用程序的硬限制。

我试图弄清楚为什么每个实例不使用它自己的最大 3.2GB 地址空间?

答案1

SQL Server 将根据负载使用更多 RAM。也许这些实例的负载不足以驱动更多内存使用?或者也许有人在实例中设置了最大内存限制?

我试图弄清楚为什么每个实例不使用它自己的最大 3.2GB 地址空间?

首先,Windows 上的任何进程都没有 3.2GB 的内存限制。进程内存地址空间不受硬件 RAM 限制(3.2GB 这样的数字听起来更像是:硬件的详细信息(包括需要内存映射 IO 的设备)取自基本的 4GB 限制)。

Windows 中 32 位进程的最大可用地址空间取决于三个因素:主机的位数、“/3G”boot.ini标志1以及可执行文件是否已使用“Large Addresse Aware”标志构建(根据此处的快速检查,SQL Server 2008 肯定已这样做):

  • 如果 exe 不是使用 Large Address Aware 标志构建的:2GB
  • 如果 exe 是使用大地址感知标志构建的
    • 在没有任何 boot.ini 标志的 32 位操作系统上:2GB
    • 在带有 /3G 的 32 位操作系统上:3GB
    • 在 64 位操作系统上:4GB

就你的情况而言:每个 32 位 SQL Server 实例可以使用 4GB 的地址空间如果需要并且没有其他限制


1根据选项开关,可以将其设置为2GB到3GB之间的各种值,但这只是改变一种情况。

答案2

Windows 64 位下的每个 32 位进程都应该能够访问 4GB 的 RAM(64 位 Windows 不会为用户和内核划分地址空间,因为内核是 64 位)。请参阅我如何判断我的 Windows 服务器是否正在交换有关 Windows 内存的更多详细信息。

相关内容