内存体系结构

SQL Server 将根据需要动态获取并释放内存。虽然该选项仍然存在且在有些环境下需要用到,但通常情况下管理员不必指定为 SQL Server 分配多少内存。

SQL Server 支持地址窗口化扩展插件 (AWE),从而允许在 32 位版本的 Microsoft Windows 操作系统上使用超过 4 GB 的物理内存。最多可支持 64 GB 的物理内存。运行在 Microsoft Windows 2000 上的 SQL Server 实例使用静态 AWE 内存分配,而运行在 Microsoft Windows Server 2003 上的实例使用动态 AWE 内存分配。

注意注意

只有 SQL Server Enterprise Edition、Standard Edition 和 Developer Edition 支持 AWE,并且 AWE 只能应用于 32 位操作系统。Analysis Services 不能利用 AWE 映射内存。如果可用物理内存小于用户模式虚拟地址空间,则无法启用 AWE。

所有数据库软件的主要设计目标之一是尽量减少磁盘 I/O,因为磁盘的读取和写入操作占用大量资源。SQL Server 在内存中生成缓冲池,以保存从数据库读取的页。SQL Server 中的大量代码专门用于尽量减少磁盘与缓冲池之间的物理读写次数。SQL Server 设法在以下两个目标之间达到平衡:

  • 防止缓冲池变得过大,从而导致整个系统内存不足。

  • 尽量增加缓冲池达的大小,以便尽量减少数据库文件的物理 I/O。

有关详细信息,请参阅缓冲区管理

默认情况下,SQL Server 2005 的各个版本动态管理每个实例占用的内存。在 Windows 2000 和更高版本的操作系统上,SQL Server 管理 AWE 映射内存的方式有所不同。

注意注意

在负载过重的系统中,某些在运行时需要大量内存的大型查询不能获取所需的最小内存量,并在等待内存资源时收到超时错误。若要解决此问题,请增大 query wait 选项。对于并行查询,请考虑减小 max degree of parallelism 选项

注意注意

在负载过重而内存不足的系统中,对于查询计划中带有合并联接、排序和位图的查询,如果无法获得位图所需的最小内存量,可以删除位图。这会影响查询的性能,并且如果排序过程所需的内存过大,就会增加 tempdb 数据库中工作表的使用量,从而导致 tempdb 增大。若要解决此问题,可添加物理内存或优化查询以使用其他更迅速的查询计划。有关优化信息,请参阅优化 tempdb 性能如何优化数据库

为 SQL Server 提供最大内存量

通过使用 AWE 和“锁定内存中的页”权限,可以为 SQL Server 数据库引擎提供下列内存量。

32 位

64 位

常规内存

所有 SQL Server 版本的最大处理虚拟地址空间限制:

  • 2 GB

  • 3 GB,具有 /3gb 启动参数 1

  • 4 GB,在 WOW642 上

所有 SQL Server 版本的最大处理虚拟地址空间限制:

  • 7 TB,在 IA64 体系结构上

  • 8 TB,在 x64 体系结构上

注意注意
在 Windows Server 2003 上,限制为 512 GB;在 Windows Server 2003 Service Pack 1 上,限制为 1 TB。Windows 支持其他内存时,SQL Server 可以达到列出的限制。

AWE 机制(允许 SQL Server 在 32 位平台上超过处理虚拟地址空间限制。)

SQL Server Standard Edition、Enterprise Edition 和 Developer Edition:缓冲池最多可以访问 64 GB 内存。

不可用 3

“锁定内存中的页”操作系统 (OS) 权限(允许锁定物理内存,避免 OS 对锁定的内存进行分页。)4

SQL Server Standard Edition、Enterprise Edition 和 Developer Edition:SQL Server 进程使用 AWE 机制所必需的。通过 AWE 机制分配的内存不能出页。

授予此权限但未启用 AWE 不会对服务器产生影响。

SQL Server Enterprise Edition 和 Developer Edition:建议,以避免操作系统分页。是否具有性能优势取决于工作负荷。可访问的内存量类似于常规内存的情况。

1**/3gb** 为操作系统启动参数。有关详细信息,请访问 MSDN Library

2 WOW64 (Windows on Windows 64) 是 32 位 SQL Server 在 64 位操作系统上运行的一种模式。有关详细信息,请访问 MSDN Library

3 注意,sp_configureawe enabled 选项显示在 64 位 SQL Server 上,但被忽略。此选项将在 64 位 SQL Server 的将来版本或 Service Pack 中删除。

4 如果授予“锁定内存中的页”权限(在支持 AWE 的 32 位系统上或单独在 64 位系统上),我们建议也要设置 max server memory。有关详细信息,请参阅服务器内存选项