SQL Server 2005的双重实例(32位)可以让我使用> 4GB的RAM吗?

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

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

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

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

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

Windows中32位进程的最大可用地址空间取决于三件事情:主机的位数,“/ 3G” boot.ini标志1以及是否使用“大地址识别”标志(SQL Server 2008肯定基于这里快速检查):

  • 如果该exe不是用大地址识别标志:2GB构build的
  • 如果exe是用大地址感知标志构build的
    • 在没有任何boot.ini标志的32位操作系统上:2GB
    • 在/ 3G:3GB的32位操作系统上
    • 在64位操作系统上:4GB

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


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

windows 64位下的每个32位进程都应该能够访问4GB内存(64位窗口不会分配用户和内核的地址空间,因为内核是64位)。 请参阅如何做,我告诉,如果我的Windows服务器是交换关于Windows内存的更多细节。