你目前正处于脱机状态,正在等待 Internet 重新连接

内存配置和调整 SQL Server 2012年及更高版本中的注意事项

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2663912
概要
Microsoft SQL Server 执行自动和动态内存管理基于内部 SQL Server 组件和工作负载的系统上的当前内存要求。SQL Server 还提供了与内存相关的配置选项,以帮助微调为特定应用程序的行为模式和特定的高级的要求。不同的配置选项如下所示:
  • sp_configure 选项 (最大服务器内存 (MB)服务器内存最小值 (MB)启用 awe)
  • -g启动参数 (memory_to_reserve)
  • 锁定的页

Microsoft SQL Server 2012年引入了内存管理器会影响管理员如何配置这些内存选项的更改。请查看升级到 SQL Server 2012年或配置新安装的 SQL Server 2012年之前这里描述的更改。

注意:本文也适用于 Microsoft SQL Server 2014年。
更多信息
SQL Server 2012年还引入了特定类型的内存分配核算的方法和控制可由这些类型的分配的内存的最大数量的内存配置选项中的更改。在 SQL Server 2012年中的更改受到特定内存分配请求从 SQL CLR 和多页分配。SQL Server 2012年的新页面分配器,用于管理单个页面和多页分配 (小于 8 KB 和大于 8 KB 的分配请求)。因此,SQL Server 2012年中是没有单独的"多页分配"类别。

更改"最大服务器内存 (MB)"和"最小服务器内存 (MB)"

在早期版本的 SQL Server (SQL Server 2005,SQL Server 2008 中,SQL Server 2008 R2),下列配置选项确定占用缓冲池中的物理内存的限制。请注意,我们正在讨论有关由 SQL Server 数据库引擎进程提交此种情况下,物理内存中的物理内存:
  • 最大服务器内存 (MB)
  • 服务器内存最小值 (MB)
Thisconfiguration 选项通常包含已小于或等于 8 KB 中的 SQL Server 进程的内存分配。这些分配 werealso 称为"single_page_allocations"因为 SQL Server 内存管理器使用 8 KB 的页面大小。这种配置不包括以下内存分配请求:
  • 从 SQL Server 的多页分配: 这些是请求大于 8 KB 的分配。
  • CLR 分配: 这些分配包含 SQL CLR 堆和 CLR 初始化期间创建的全局分配。
  • SQL Server 进程中的线程堆栈的内存分配。
  • 直接针对 Windows 进行内存分配请求: 其中包括 Windows 堆的用法和直接虚拟分配所做的到的 SQL Server 进程加载的模块。这种内存分配请求的示例包括分配的扩展存储过程 Dll,通过自动化过程 (sp_OA 调用) 和分配从链接的服务器提供程序创建的对象。

从 SQL Server 2012年,多页分配和 CLR 分配也包括在受最大服务器内存 (MB)服务器内存最小值 (MB)的内存限制。这种更改为 SQL Server 内存管理器所经历的所有内存要求更准确地调整能力。在升级到 SQL Server 2012年后请仔细检查您当前的最大服务器内存 (MB)服务器内存最小值 (MB)的值。因为 SQL Server 2012年现在包括和与早期版本相比更多的内存分配的帐户,您应该检查这些值。这些更改将应用于 32 位和 64 位版本的 SQL Server 2012年。

下表指示特定类型的内存分配受最大服务器内存 (MB)服务器内存最小值 (MB)配置选项。
类型的内存分配SQL Server 2005 中,SQL Server 2008 中,SQL,Server 2008 R2SQL Server 2012,SQL Server 2014
单个页分配是的合并到"任何大小"页分配
多页分配是的合并到"任何大小"页分配
CLR 分配
线程的堆栈内存
直接从 Windows 分配
SQL Server 2012年及更高版本可能会分配更多内存,比最大服务器内存设置中指定的值。当总的服务器内存 (KB)值已达到 (按照指定的最大服务器内存) 的目标服务器内存 (KB)设置,则可能发生此问题。如果没有足够的连续可用内存满足由于内存碎片的多页内存请求 (多为 8 KB),SQL Server 可以执行过多的承诺,而不是拒绝该内存请求。

只要执行这种分配时,资源监视器开始释放分配的内存,并且试图使总的服务器内存 (KB)值 belowthe目标服务器内存 (KB)规范。因此,SQL Server 内存使用量可能短暂 exceedthe最大服务器内存设置。在此情况下,总的服务器内存 (KB)性能计数器阅读将超过的最大服务器内存目标服务器内存 (KB)设置。

这种现象通常在以下操作过程观察到:
  • 大 Columnstore 索引查询
  • Columnstore 索引 (重新) 生成,它使用大量的内存来执行散列和排序操作
  • 需要大量内存缓冲区的备份操作
  • 跟踪需要存储大量的输入的参数的操作

对于 SQL Server 2014年累积更新 8对于 SQL Server 2014 SP1 的累积更新 1前面的概述中所述,引入了更快的内存释放,改进。另外,SQL Server 2014 累积更新 9解决内存分配问题涉及过多的承诺。有关详细信息,请参阅下面的 Microsoft 知识库文章:
最大服务器内存设置内存的一些部分有关详细信息,请参见 服务器内存服务器配置选项 联机丛书的主题。

"Memory_to_reserve"的更改


在早期版本的 32 位 SQL Server (SQL Server 2005,SQL Server 2008 中,SQL Server 2008 R2),SQL Server 内存管理器放在一边使用进程虚拟地址空间的一部分通过设置以下分配请求:
  • 从 SQL Server 的多页分配: 这些是请求大于 8 KB 的分配。
  • CLR 分配: 这些分配包含 SQL CLR 堆和 CLR 初始化期间创建的全局分配。
  • SQL Server 进程中的线程堆栈的内存分配。
  • 直接针对 Windows 进行内存分配请求: 这些分配请求包括 Windows 堆使用情况和直接虚拟分配所做的到的 SQL Server 进程加载的模块。这种内存分配请求的示例包括分配的扩展存储过程 Dll,通过自动化过程 (sp_OA 调用) 和分配从链接的服务器提供程序创建的对象。

保留这些分配的虚拟地址空间是由memory_to_reserve配置选项决定的。SQL Server 使用的默认值为 256 MB。若要重写默认值,请使用 SQL Server -g启动参数。虚拟地址空间的这一部分也称为是"保留的内存"或"非缓冲池区域"。

由于 SQL Server 2012年的新"任何大小"页面分配器处理大于 8 KB 的分配,则memory_to_reserve值不包括多页分配。这种更改,除一切保持不变,此配置选项。

下表指示是否特定类型的内存分配到的虚拟地址空间的memory_to_reserve地区为 SQL Server 进程。
类型的内存分配SQL Server 2005,SQL Server 2008年,SQL Server 2008 R2SQL Server 2012,SQL Server 2014
单个页分配不,合并到"任何大小"页分配
多页分配不,合并到"任何大小"页分配
CLR 分配
线程的堆栈内存
直接从 Windows 分配

对其他与内存相关的配置选项的更改

如果您配置了 SQL Server 2005,SQL Server 2008 中或 SQL Server 2008 R2,若要使用"启用 awe"选项,请查看以下文章以了解重要更改该配置选项:

如果配置 SQL Server 2005 时,SQL Server 2008 中或 SQL Server 2008 R2 要使用"锁定的页"功能,请查看以下文章以了解重要更改该配置选项:

各种版本的 SQL Server 的最大内存利用率

不同版本的 SQL Server 对他们可以使用的各种资源的最大限制。有强加于 SQL Server 的不同版本的最大内存使用量的限制。例如,SQL Server 2008 R2 标准版实例可以使用仅 64 GB 的最大内存。有关完整的详细信息,请转到下面的 MSDN 网页:从 SQL Server 2012年,并仅对数据库高速缓存 (缓冲池) 强制这些内存限制。其余的 SQL Server 内存管理器中的高速缓存可以使用更多内存不是由这些版本限制。例如,SQL Server 2012年速成版可以为其数据库缓存使用仅 1.4 g B 的最大大小。其他 (如过程高速缓存、 元数据缓存等) 的高速缓存可以占用内存最多的"最大服务器内存"配置指定的大小。

警告:本文已自动翻译

属性

文章 ID:2663912 - 上次审阅时间:11/07/2015 07:17:00 - 修订版本: 6.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2014 Enterprise

  • kbtshoot kbmt KB2663912 KbMtzh
反馈