有人在具有16GB RAM的64位操作系统上安装了32位版本的MS sql Server 2005. sql Server的两个实例正在运行,但每个进程仅使用大约1.7GB的RAM.合并后,这相当于大约3.2GB,或32位应用程序的硬限制.
我想弄清楚为什么每个实例都没有使用它自己的3.2GB最大地址空间?
解决方法
sql Server将根据负载使用更多RAM.也许这些实例的负载不足以驱动更多的内存使用?或者有人在实例中设置了最大内存限制?
I’m trying to figure out why each instance isn’t using it’s own 3.2GB max address space?
首先,Windows上的任何进程都没有3.2GB的内存限制.进程内存地址空间不受硬件RAM限制的限制(类似于3.2GB的数字听起来更像:硬件细节,包括需要内存映射IO的设备,取自基本的4GB限制).
Windows中32位进程的最大可用地址空间取决于三个方面:主机的位数,“/ 3G”boot.ini flag1以及可执行文件是否已使用“Large Addresse Aware”标记构建(sql Server 2008当然具有基于这里的快速检查):
>如果exe不是使用Large Address Aware标志构建的:2GB
>如果exe是使用大地址识别标志构建的
>在没有任何boot.ini标志的32位操作系统上:2GB
>在带有/ 3G:32GB的32位操作系统上
>在64位操作系统上:4GB
在您的情况下:每个32位sql Server实例可以在需要时使用4GB的地址空间,并且不受其他限制.
1根据选项开关,可以将其设置为2GB到3GB之间的各种值,但这只会改变一种情况.