服务器内存配置选项

08/14/2019

本文内容

适用于:

SQL Server(所有支持的版本)

重新配置 SQL Server 实例使用的 SQL Server 进程的内存量(以 MB 为单位)。 有两个服务器内存选项:min server memory 和 max server memory。 这些选项会更改 SQL Server 内存管理器可分配给 SQL Server 进程的内存量。

这些选项的默认设置和允许的最小值为:

选项

默认

允许的最小值

min server memory

0

0

max server memory

2,147,483,647 兆字节 (MB)

128 MB

默认情况下, SQL Server 的内存要求会根据可用系统资源的情况动态变化。 有关详细信息,请参阅动态内存管理。

重要

将“max server memory”值设置得太高可能导致一个 SQL Server 实例与同一主机上承载的其他 SQL Server 实例争用内存。 但是,将此值设置得太低可能会导致极大的内存压力和性能问题。 将“max server memory”设置为最小值甚至可能导致无法启动 SQL Server。 如果在更改此选项之后无法启动 SQL Server,请使用“-f”启动选项启动它,并将“max server memory”重置为以前的值 。 有关详细信息,请参阅 Database Engine Service Startup Options。

SQL Server 可动态使用内存;但也可以手动设置内存选项并限制 SQL Server 可以访问的内存量。 在设置 SQL Server 的内存量之前,请通过从总物理内存中减去操作系统所需的内存(即不受 max_server_memory 设置控制的内存分配)以及任何其他 SQL Server 实例所需的内存(如果计算机并非完全由 SQL Server 专用,则还要减去其他系统使用的内存量)。 这个差值就是可以分配给当前 SQL Server 实例使用的最大内存量。

手动设置选项

可以将 min server memory 和 max server memory 设置成一个内存范围 。 在需要兼顾同一台主机上运行的其他应用程序或其他 SQL Server 实例的内存要求时,此方法对于配置 SQL Server 实例的系统或数据库管理员来说非常有用。

备注

min server memory 和 max server memory 选项都是高级选项。 如果使用 sp_configure 系统存储过程来更改这些设置,则只有在“显示高级选项”设置为 1 时才能更改它们。 这些设置更改后会立即生效,不需要重新启动服务器。

使用 min_server_memory 可以保证可供 SQL Server 实例的 SQL Server 内存管理器使用的最小内存量。 SQL Server 不会在启动时立即分配 min server memory 中指定的内存量。 不过,除非降低 SQL Server min server memory 的值,否则当内存使用量由于客户端负荷而达到该值后, 不能释放内存。 例如,同一个主机中可同时存在多个 SQL Server 实例时,为了给实例保留内存,请设置 min_server_memory 参数而不是 max_server_memory。 此外,为了确保来自基础主机的内存压力不会尝试从来宾 SQL Server 虚拟机 (VM) 上的缓冲池释放超过可接受性能所需的内存,在虚拟环境中设置 min_server_memory 值非常必要。

备注

SQL Server 并不一定分配“最小服务器内存”中指定的内存量。 如果服务器上的负荷从不需要分配 min server memory 指定的内存量,则 SQL Server 将以较少的内存运行。

使用 max_server_memory 来保证 OS 不会遇到不利的内存压力。 若要设置 max server memory 配置,请监视 SQL Server 进程的总体消耗,以确定内存要求。 使单个实例的这些计算更准确:

从 OS 总内存中,为 OS 自身保留 1GB - 4GB。

然后,减去等于在“最大服务器内存”控制范围外的潜在 SQL Server 内存分配的值,即堆栈大小1 * 计算出的最大工作线程数 2 。 所得结果就是一个实例设置的 max_server_memory 设置。

1 有关每个体系结构的线程堆栈大小的信息,请参阅内存管理体系结构指南。

2 有关为当前主机中给定数量的关联 CPU 计算得出的默认工作线程数的信息,请参阅介绍如何配置最大工作线程数服务器配置选项的文档页。

使用 SQL Server Management Studio

使用“min server memory”和“max server memory”这两个服务器内存选项重新配置由 SQL Server 内存管理器为 SQL Server 实例管理的内存量 (MB)。 默认情况下, SQL Server 的内存要求会根据可用系统资源的情况动态变化。

配置固定内存量的过程(不推荐)

设置固定内存量:

在对象资源管理器中,右键单击服务器并选择 “属性” 。

单击 “内存” 节点。

在 “服务器内存选项” 中,为 “最小服务器内存” 和 “最大服务器内存” 输入所需的内存量。

使用默认设置,将允许 SQL Server 根据可用系统资源动态更改其内存需求。 建议按上述内容设置 max server memory。

下面的屏幕截图演示了所有这三个步骤:

锁定内存页 (LPIM)

此 Windows 策略将确定哪些帐户可以使用进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。 锁定内存中的页可以在发生将内存分页到磁盘时保持服务器的响应能力。 已向有权运行 sqlservr.exe 的帐户授予 Windows 锁定内存页 (LPIM) 用户权限时,在 SQL Server Standard Edition 和更高版本的实例中将“锁定内存页”选项设置为“打开”。

若要对 SQL Server禁用“锁定内存页”选项,请为有权运行 sqlservr.exe(SQL Server 启动帐户)启动帐户的帐户删除“锁定内存页”用户权限。

设置此选项可实现根据其他内存分配器的请求扩大或缩小内存,不影响 SQL Server 动态内存管理。 使用“锁定内存页”用户权限时,建议按如上所述,为 max server memory 设置一个上限。

重要

应仅在必要时设置此选项,即有迹象表明正在换出 sqlservr 进程时。在这种情况下,错误日志将报告错误 17890,类似于以下示例:A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: #### seconds. Working set (KB): ####, committed (KB): ####, memory utilization: ##%.

从 SQL Server 2012 (11.x) 开始,Standard Edition 不需要跟踪标志 845来使用“锁定页”。

启用“锁定内存页”

启用“锁定内存页”选项:

在 “开始” 菜单上,单击 “运行” 。 在“打开” 框中,键入 gpedit.msc

将打开 “组策略” 对话框。

在 “组策略” 控制台上,展开 “计算机配置” ,再展开 “Windows 设置” 。

展开 “安全设置” ,再展开 “本地策略” 。

选择 “用户权利指派” 文件夹。

细节窗格中随即显示出策略。

在该窗格中,双击“锁定内存页”。

在“本地安全策略设置”对话框中,添加有权运行 sqlservr.exe (SQL Server 启动帐户)的帐户。

SQL Server 的多个实例

当运行多个 数据库引擎实例时,可以使用三种方法来管理内存:

使用“max server memory”控制内存使用量,如上所述。 为每个实例建立最大设置,注意总的允许设置值不能大于计算机上的物理总内存。 可能需要为每个实例提供与预期的工作负荷或数据库大小成正比的内存。 这种方法的优势体现在:当启动新的进程或实例时,可以立即为这些进程或实例提供可用内存。 这种方法的缺点为:如果没有运行所有实例,则所有运行中的实例都无法使用剩余的可用内存。

使用“min server memory”控制内存使用量,如上所述。 为每个实例建立最小设置,以使这些最小值的和比计算机上总的物理内存小 1-2 GB。 此外,可能需要建立与该实例的预期负荷成正比的最小值。 这种方法的优势体现在:如果没有同时运行所有实例,则运行中的实例可以使用剩余的可用内存。 当计算机上存在其他占用大量内存的进程时,这种方法也十分有用,因为它可确保 SQL Server 至少获得合理的内存量。 这种方法的缺点是:当启动新的实例(或任何其他进程)时,运行的实例可能会花费一些时间来释放内存,如果实例必须将修改后的页写回到数据库中来释放内存,则花费的时间可能会更长。

不执行任何操作(不推荐)。 带有工作负荷的第一个实例通常分配所有的内存。 空闲实例或稍后启动的实例最终可能会只使用最少的可用内存量运行。 SQL Server 不会尝试均衡分配各个实例的内存使用量。 但是,所有实例均将响应 Windows 内存通知信号以调整它们内存需求量的大小。 Windows 不会使用内存通知 API 来平衡各个应用程序使用的内存。 它只提供有关系统内存可用性的全局反馈。

您可以在不重新启动实例的情况下更改这些设置,以便可以轻松地进行尝试以找到适合使用模式的最佳设置。

提供最大内存量

在 SQL Server 的所有版本中,内存最大可配置为进程虚拟地址空间限制。 有关详细信息,请参阅 Windows 和 Windows Server 版本的内存限制。

示例

示例 A. 将最大服务器内存选项设置为 4 GB。

以下示例将 max server memory 选项设置为 4 GB。 请注意,虽然 sp_configure 将选项的名称指定为 max server memory (MB),但该示例的演示省略了 (MB)。

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'max server memory', 4096;

GO

RECONFIGURE;

GO

此操作输出的语句类似于:

配置选项“最大服务器内存 (MB)”从 2147483647 更改为 4096。 请运行 RECONFIGURE 语句进行安装。

示例 B. 确定当前内存分配

以下查询返回有关当前分配内存的信息。

SELECT

physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB,

large_page_allocations_kb/1024 AS sql_large_page_allocations_MB,

locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,

virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB,

virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB,

virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,

page_fault_count AS sql_page_fault_count,

memory_utilization_percentage AS sql_memory_utilization_percentage,

process_physical_memory_low AS sql_process_physical_memory_low,

process_virtual_memory_low AS sql_process_virtual_memory_low

FROM sys.dm_os_process_memory;

示例 C. 确定“最大服务器内存 (MB)”的值

以下查询返回有关当前配置的值和 SQL Server 使用的值的信息。 无论“显示高级选项”是否为 true,此查询都将返回结果。

SELECT c.value, c.value_in_use

FROM sys.configurations c WHERE c.[name] = 'max server memory (MB)'

后续步骤

服务器物理内存配置,服务器内存配置选项相关推荐

  1. sql server服务器物理内存满,解决内存不足问题

    解决内存不足问题 12/21/2017 本文内容 适用于: SQL Server(所有支持的版本) SQL Server 内存中 OLTP 相比, SQL Server. 随着需求的不断增加,为 内存 ...

  2. 服务器物理内存高,服务器的物理内存高

    服务器的物理内存高 内容精选 换一换 本节操作指导您完成Windows操作系统云服务器磁盘空间清理.弹性云服务器匀出一部分磁盘空间来充当内存使用,当内存耗尽时,云服务器可以使用虚拟内存来缓解内存的紧张 ...

  3. 服务器物理内存利用率,服务器提高物理内存利用率

    服务器提高物理内存利用率 内容精选 换一换 本文档专供需要对Yarn进行应用开发的用户使用.本指南主要适用于具备Java开发经验的开发人员.Yarn是一个分布式的资源管理系统,用于提高分布式的集群环境 ...

  4. mysql 16g 内存服务器_服务器物理内存16G mysql数据库my.cnf配置及参数说明

    <服务器物理内存16G mysql数据库my.cnf配置及参数说明>要点: 本文介绍了服务器物理内存16G mysql数据库my.cnf配置及参数说明,希望对您有用.如果有疑问,可以联系我 ...

  5. 4g的服务器mysql配置文件,服务器物理内存16G mysql数据库my.cnf配置及参数说明

    搜索热词 <服务器物理内存16G MysqL数据库my.cnf配置及参数说明>要点: 本文介绍了服务器物理内存16G MysqL数据库my.cnf配置及参数说明,希望对您有用.如果有疑问, ...

  6. Flink部署——内存配置

    文章目录 配置 Flink 进程的内存 配置总内存 JVM 参数 受限的等比内存部分 配置 TaskManager 内存 配置总内存 配置堆内存和托管内存 任务(算子)堆内存(Task (Operat ...

  7. 浅谈优化SQLServer数据库服务器内存配置的策略

    引文 http://demo.nbarticle.com/view/2004/8/9/view_1827.htm 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于Win ...

  8. hp服务器改最大性能,HP服务器 dl380g5 内存配置

    DL380G5 支持以下高级内存选项以优化服务器的性能 Advanced Memory Protection (AMP) 可用性: 高级 ECC 使用 2-GB FB ( FULLY BUFFERED ...

  9. 提高numa服务器cpu性能,提升虚拟机性能 内存配置技巧之一NUMA

    内存对虚拟机性能至关重要,但仅仅给服务器增加更多的物理内存远远不够.虚拟机的内存分配及配置对性能具有重大影响,对其进行调整有助于避免出现内存浪费的情况.发现可能的整合机会.让我们一起考虑一下在数据中心 ...

最新文章

  1. Python 字典(Dictionary) get()方法
  2. 基于 gulp 的 fancybox 源码压缩
  3. 机器学习中的双层规划问题
  4. JDK1.8源码(六)——java.util.LinkedList 类
  5. linux 磁盘延时,Linux:如何模拟硬盘延迟?我想在不使用CPU电源的情况下增加iowait值...
  6. Theano3.2-练习之数据集及目标函数介绍
  7. 发布react项目到linux服务器,nginx上部署react项目的实例方法
  8. 产品经理必备利器:UML
  9. 使用swfupload出现2049的错误原因
  10. Hash碰撞的解决方案
  11. Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment
  12. php文件之间传值的三种主流并且常用的方式
  13. Oracle11g导出空表解决方法
  14. QTTabBar 简单配置
  15. 关于Canvas 常用API汇总
  16. [bzoj4136][fjoi2015]带字串包含约束lcs问题
  17. Java根据模板生成PDF文件|添加盖章|添加水印
  18. LCC谐振变换器部分参数设计过程
  19. 二、5移动端网页适配
  20. vue中使用video标签插入视频并自动播放

热门文章

  1. 自我介绍 写博客的计划
  2. 脑经急转弯似的面试题
  3. 中西点专业还是计算机专业好,技校学什么专业好找工作
  4. 浏览器语言列表(语种名称代码)
  5. SupArc启动过程抓包
  6. android中NFC读写功能的实现方法
  7. 中职计算机英语教学大纲,中职英语教学大纲与教学计划
  8. 6. 模数转换器ADC
  9. CC00276.CloudKubernetes——|KuberNetes中间件容器化及helm.V23|——|中间件.v03|helm.v3.5.4|集群测试|
  10. java-php-python-ssm-基于的幼儿早教系统软件的设计与实现-计算机毕业设计