有人在具有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肯定基于这里快速检查):
在你的情况下:每个32位SQL Server实例可以使用4GB的地址空间, 如果它需要它,并没有其他限制 。
1根据选项开关,可以将其设置为2GB到3GB之间的各种值,但只是更改了一种情况。
windows 64位下的每个32位进程都应该能够访问4GB内存(64位窗口不会分配用户和内核的地址空间,因为内核是64位)。 请参阅如何做,我告诉,如果我的Windows服务器是交换关于Windows内存的更多细节。