32 位的操作系统只能用 4G 的内存(不确定这句话是否正确),因为 2 的 32 次方是 4G 。默认的情况下,操作系统给自己留了 2G ,剩下的 2G 给应用程序。所以,每个应用程序所能使用的内存,最大不超过 2G 。据说可以改 WINDOWS 的 BOOT.INI ,强制操作系统只使用 1G ,即使这样,应用程序也至多是 3G 。
SQL SERVER 就是这么个倒霉的应用程序。
就拿我们服务器来讲, OS : windows 2003; 内存: 8G; SQL:2008 。结果内存只用了不到 2G ,其中 SQL 是 1.7 G ,并且这个值基本没有什么变化。
太浪费了。
十月革命一声炮响,微软送来了 AWE 。这个东西可以让 32 位操作系统下的应用程序使用更多的内存。 SQL 支持 AWE 。
步骤:
1、 进入 SQL SERVER Management Studio
2、 右击数据库实例,选内存
3、 勾上“使用 AWE 分配内存”,填上合适的最小和最大内存(具体是什么标准不清楚,我是给操作系统预留了 2G; 有的内存紧张的服务器只留 1G, 甚至只有 500M ,也没发现什么问题)
4、 重启数据库实例。
之后用任务管理器查看,内存消耗越来越多,直至比设定值大一点点。很奇怪,这时看 SQL 消耗的内存,只有几十 M ,不知道这个数值怎么来的。估计是分配的内存之外消耗的吧?
在性能监视器(管理工具 - 性能)上看到,磁盘队列大大减少了,实际应用,网站快了许多。