前言: 本文讲述32位和64位系统中的内存配置,在sqlserver 2005/2008中,dba们往往尝试开启awe来限制内存。但是,在sqlserver2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间。如果你服务器上有很多内存,就只能升级到64位系
前言: 本文讲述32位和64位系统中的内存配置,在sqlserver 2005/2008中,dba们往往尝试开启awe来限制内存。但是,在sqlserver2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间。如果你服务器上有很多内存,就只能升级到64位系统。下面是微软给出的内存限制:
虽然2012以后已经弃用awe,但是了解一下32位系统如何使用awe(address windowingextensions)来使得操作系统能够访问更多的内存。如果可用的物理内存比maximum server memory选项的还要多,那么sqlserver会锁定在maximum server memory选项,如果maximum server memory选项没有设置或者物理内存比这个选项设置得还要少,那么sqlserver实例会占用所有可用内存,仅保留256mb。
准备工作:记住当前的maximum server memory和minimum server memory的值,可以在视图sys.configurations表中查看,这个视图包含有系统级别的的配置信息。
步骤:1、 用以下语句设置sqlserver的最小内存:
exec sp_configure 'min server memory (mb)', 1024goreconfigure with override ;go
2、 用以下脚本设置最大内存: exec sp_configure 'max server memory (mb)', 3000goreconfigure with override ;go
分析: 步骤1配置最小内存给sqlserver,默认值为0,可以设置最小值小于或等于max server memory的值。
步骤2配置sqlserver的最大分配内存,默认值为2tb,这个值不能少于64m。
所有的设置都储存在sqlserver的buffer pool中。如果你使用32位系统,你的sqlserver不能使用超过3g的内存。不管你有多少可用内存在服务器上。除非开启了awe和pae。
如果系统中的系统服务仅仅运行了sqlserver,那么设置最大内存即可,但是如果有多个服务同时运行。并且域控制器使用了最大内存,sqlserver将会内存不足,换个角度,如果sqlserver使用了最大内存,那么域控制器又会内存不足,引起,应该合理配置内存,以避免内存的溢出。