如何减少分页缓冲池内存在 SQL Server 的 64 位版本

文章翻译 文章翻译
文章编号: 918483 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

Microsoft SQL Server 执行基于当前负载和系统上的活动内存需求的动态内存管理。在 Windows Server 2003 或 Windows XP 或更高版本的系统,SQL Server 可以使用所提供的 QueryMemoryResourceNotification Windows API 的内存通知机制。在基于 Microsoft Windows 2000 服务器的系统上,SQL Server 定期使用本机 Windows API 计算系统上可用的物理内存。基于这一点,从 QueryMemoryResourceNotification Windows API 或内存计算,SQL Server 将响应特定系统上的当前内存情况。这提供了以下好处:
  • 系统不会不是页出 SQL Server 进程的工作集。
  • 所需的数据库页位于内存以减少物理 I/O 需求。
有关详细信息,请参阅"动态内存管理"主题和 SQL Server 联机丛书中的"服务器内存选项"主题。

症状

在 SQL Server 的 64 位版本,可能会出现各种问题。例如,可能会出现下列问题:
  • SQL Server 的性能突然降低。
  • 一台正在运行 SQL Server 的计算机停止响应的很短的时间。
  • 发生超时,则连接到 SQL Server 的应用程序。
  • 当您运行甚至简单的命令,或在系统上使用的应用程序时,就会出现问题。
如果安装了 SQL 2005 Service Pack 2 (SP2) 或更高版本,下列错误消息之一时将记录在 SQL Server 错误日志中出现这些问题:
错误消息 1
日期时间 spid1s sql 服务器进程内存的一个重要部分已被调出。这可能会导致性能下降。持续时间: 0 秒。工作集 (KB): 1086400,提交 (KB): 2160928,内存利用率: 50%。
错误消息 2
日期时间 spid1s sql 服务器进程内存的一个重要部分已被调出。这可能会导致性能下降。持续时间: 315 秒为单位)。工作集 (KB): 410156,提交 (KB): 2201296,内存利用率: 18%。
错误消息 3
日期时间 spid1s sql 服务器进程内存的一个重要部分已被调出。这可能会导致性能下降。持续时间: 646 秒。工作集 (KB): 901904,提交 (KB): 2215752,内存利用率: 40%。

Microsoft SQL Server 支持团队还出现其他错误或警告,在 SQL Server 错误日志或 Windows 事件日志中记录的信息。这些消息类似于以下内容:
2009-05-05 15:43:56.01 Server      Resource Monitor (0x13c43) Worker 0x0412C1E8 appears to be non-yielding on Node 0. Memory freed: 34152 KB. Approx CPU Used: kernel 171 ms, user 140 ms, Interval: 125093.

2009-05-05 12:54:52.18 Server      * *******************************************************************************
2009-05-05 12:54:52.18 Server      * BEGIN STACK DUMP:
2009-05-05 12:54:52.18 Server      *   05/05/08 12:54:52 spid 0
2009-05-05 12:54:52.18 Server      * Non-yielding Resource Monitor
2009-05-05 12:54:52.18 Server      * *******************************************************************************

2009-06-10 09:13:53.44 Server      * *******************************************************************************
2009-06-10 09:13:53.44 Server      * BEGIN STACK DUMP:
2009-06-10 09:13:53.44 Server      *   06/10/09 09:13:53 spid 0
2009-06-10 09:13:53.44 Server      * Non-yielding IOCP Listener
2009-06-10 09:13:53.44 Server      * *******************************************************************************

2009-06-10 09:13:55.85 spid2s      LazyWriter: warning, no free buffers found.

2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) is marked for unload due to memory pressure.
2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) unloaded.

2009-07-15 13:37:51.42 Logon       Error: 17189, Severity: 16, State: 1.
2009-07-15 13:37:51.42 Logon       SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: xx.xxx.xx.xx]

Event Type:	Error
Event Source:	SQLBrowser
Event ID:	8
Description: The SQLBrowser service was unable to process a client request. 
这些附加的错误信息或警告可能会出现与"sql 服务器进程内存的很大一部分已被调出"错误消息。在若干情况下,这些附加的错误信息或警告和错误消息不亮。

如果您注意到其中一个错误消息或警告,请考虑工作集分页中作为一个可能的原因,但不是唯一的原因本文讨论 SQL Server。由于各种其他条件或原因,无法记录这些其他错误消息或警告。

原因

因为 Windows 操作系统页了解 SQL Server 进程的工作集,将出现此问题。

这些错误消息记录的 SQL Server 进程的工作集达到 50%或更少的致力于 SQL Server 进程的内存。这些错误消息可用于确定在其中 SQL Server 性能会显著降低由于 Windows 操作系统页了解 SQL Server 进程的工作集的大小写。此外,这些错误消息被记录在前 30 分钟的过程中每隔五分钟。第 30 分钟后,这些错误消息的频率加倍直到频率达到最大的一天。

发生此问题时,您可能会注意到在系统上的其他应用程序的工作集也大约在同一时间调出。
有关详细信息,请访问下面的 Microsoft 网站:
http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx
此外,一个已知的问题存在于 SQL Server,您可能会收到此错误消息的实例。在启动过程中的 SQL Server,如果在 SQL Server 错误日志中记录错误消息。错误消息可能是假的警告。因此,它不一定表明已实际发生的修剪工作集。有关详细信息,请访问下面的 Microsoft 网站:
http://blogs.msdn.com/psssql/archive/2009/05/12/sql-server-reports-working-set-trim-warning-message-during-early-startup-phase.aspx

替代方法

若要变通解决此问题之前,请在"如何解决此问题"部分中,若要解决此问题执行步骤。

如果您仍然遇到此问题,您可以通过锁定为在物理内存中的缓冲区池分配的内存分页缓冲池内存的 SQL Server 进程出的防止 Windows 操作系统。您可以通过在内存中的锁定页用户将权限分配给用户帐户用作 SQL Server 服务的启动帐户锁定内存。

注意对于 SQL Server 的 64 位版本,只有 SQL Server 企业版可以使用内存中的锁定页用户权限。这是适用于 SQL Server 2005 [RTM SP1,SP2,SP3] 和 [RTM 和 SP1] 的 SQL Server 2008年。SQL Server 2008 SP1 累积更新 2 和 SQL 服务器 2005 SP3 累积更新 4 引入了对 SQL Server 标准版以使用锁定在内存中的页的用户权限的支持。 在 64 位系统上支持锁定页面的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
970070 锁定页支持 SQL Server 2005 标准版 64 位系统上,并在 SQL Server 2008年标准版 64 位系统上
若要分配的内存中的锁定页的用户权限,请执行以下步骤:
  1. 单击开始,然后单击运行,类型 gpedit.msc然后单击确定

    注意组策略对话框。
  2. 展开ComputerConfiguration,然后再展开Windows 设置
  3. 展开安全设置,然后展开本地策略
  4. 单击用户权限分配中,,然后双击锁定页 inmemory
  5. 本地安全策略设置对话框中,单击添加用户或组
  6. 选择用户或组对话框中,将该帐户有权运行 Sqlservr.exe 文件中,添加,然后单击确定
  7. 关闭组策略对话框。
  8. 重新启动 SQL Server 服务。
分配后内存中的锁定页用户权限,并且在重新启动 SQL Server 服务,Windows 操作系统不再出在 SQL Server 中的缓冲池内存的页处理。但是,Windows 操作系统可以仍然出在 SQL Server 进程内的 nonbuffer 池内存页。

您可以验证用户权限使用 SQL Server 的实例,应确保在启动 SQL Server 错误日志中写入以下的消息:
将锁定的页用于缓冲池
此消息仅适用于 64 位版本的 SQL 服务器错误日志中此消息的详细信息,请访问下面的 Microsoft 网站:
http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
当 Windows 操作系统页出 nonbuffer 缓冲池内存时,您仍然可能会遇到性能问题。但是,在 SQL Server 错误日志中未记录"症状"一节中提到的错误消息。这种现象出现的原因是 SQL Server 进程的工作集通常不会达到 50%或更少的提交的内存。

更多信息

如何解决这个问题

若要解决此问题,请执行以下步骤:
  1. 要解决导致 SQL Server 进程的工作集出页到 Windows 操作系统的已知的问题,请应用以下 Microsoft 知识库文章中描述的修补程序。

    注意 修补程序是累积性的。更高版本的修复程序包含此修补程序的早期版本。
    • Microsoft 已找到,可能会导致 SQL Server 的 64 位版本工作集要裁切的问题。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
      905865 当您使用终端服务登录到或从正在运行 Windows Server 2003 的计算机上注销时,可能会被剪裁的控制台会话中所有进程的工作集大小
    • 这些缓存脏缓冲区,如果没有执行缓冲的 I/O,例如文件复制操作的应用程序,运行 Windows Server 2003 的计算机可能会过高。这种行为会导致 SQL Server 要裁切的工作集。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
      920739 复制大于大约 500 MB,或 Windows 服务器 2003年的 Windows 服务器 2003 S 中的文件时,您可能会遇到系统的整体性能下降
    • 在系统使用的一些高级的功能 (TCP 时,SQL Server 工作集可能会被剪裁。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
      942861 在应用程序连接到 SQL Server 上运行 Windows Server 2003 的服务器时出现错误消息:"常规网络错误,""通信链路故障"传输级错误"
    • 在多处理器计算机上运行 Windows Server 2003,系统过程可能会占用大部分可用的系统内存。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
      942486 系统过程可能会占用大部分正在运行 Windows Server 2003 的多处理器计算机上可用的系统内存
  2. 如果设备驱动程序使用 MmAllocateContiguousMemory 函数,并且如果该设置的值 HighestAcceptableAddress 参数小于 4 千兆字节 (GB),Windows 操作系统可能出 64 位 SQL Server 进程的工作集的页。若要解决此问题,请与驱动程序的更新的设备驱动程序的供应商联系。遇到问题的驱动程序的列表,请参见下面的 Microsoft 知识库文章中的"其他供应商"部分:
    2121098 推荐的操作系统更新和 SQL Server 安装的驱动程序
  3. 如果应用这些修补程序后,仍会遇到这些问题,在应用 Windows 修补程序,以限制每个进程的剪裁操作的数量。 详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    938486 由于由一个不确定的模块,它请求大量内存的内存管理器修整操作一台基于 Windows Server 2003 的计算机变得没有反应
    956341 一台基于 Windows Server 2003 的计算机由于没有反应较大的内存分配请求
    当设备驱动程序尝试分配内存时,则 Windows 操作系统可能出其他应用程序的工作集页。此 Windows 修补程序,您可以使用事件跟踪来查找导致问题的设备驱动程序。若要查找有关特定驱动程序导致的工作集修整行为的详细信息,请参阅 MSDN 文章"用于标识分配的连续内存的驱动程序."
  4. 应用程序可能使用系统缓存太大,并可能会使系统高速缓存较大增长。响应系统缓存的增长时,系统页面外或其他应用程序的 SQL Server 进程的工作集。如果您遇到此问题,您可以使用一些内存管理函数在应用程序中。这些函数来控制文件 I/O 操作可以在应用程序中使用的系统高速缓存空间。例如,您可以使用 SetSystemFileCacheSize 函数和 GetSystemFileCacheSize 控制文件 I/O 操作可以使用系统缓存空间的函数。

    内存性能对象可用于此对象,可以确定系统缓存的工作集是否使用过多的内存中查看不同的计数器的值。例如,您可以查看缓存字节数和系统缓存驻留字节数计数器。有关此主题的详细信息,请访问下面的 Microsoft 网站:
    http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx

    http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx

    ttp://support.microsoft.com/default.aspx?scid=kb;美国英语 ; 976618
    您可以下载并部署"Microsoft Windows 动态缓存服务"来控制系统高速缓存使用的内存。
  5. 如果 SQL Server 正在运行与 SAP R/3 中,您可能会遇到一个分页问题。 有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    931308 当您在基于 Windows Server 2003 的计算机上运行 SAP R/3 的程序时,您可能会遇到增加的分页到硬盘
  6. 如果您在 Windows Server 2008 上运行 SQL Server,则必须应用可能会导致其他操作系统组件工作集修整或不需要过多的内存消耗的已知问题的修复程序。详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    971442 当您尝试通过网络从一台服务器正在运行 Windows Vista 或 Windows Server 2008 中复制文件时,将成为严重减少服务器的系统性能

    974609 随机运行 Windows Server 2008 的计算机停止响应时运行大型应用程序

    971714 报告生成过程可能会停止响应时使用活动目录诊断模板生成报告的基于 Windows Server 2008 的域控制器上运行 Perfmon.exe
  7. 如果您正在运行 Windows 服务于 2008 R2 上的 SQL Server,则必须应用会导致工作集修整的已知问题的修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    979149 运行大型应用程序时,计算机运行 Windows 7 或 Windows Server 2008 R2 的意外响应

    2155311 具有基于 NUMA 的处理器,并且如果在第一个 4 GB 内存的内存线程的请求很多正在运行 Windows Server 2008 R2 或 Windows 7 的计算机上出现性能降低。

    2468345 计算机间歇性性能较差,或者 Storport 驱动程序在 Windows Server 2008 R2 中使用时停止响应

如何确定由 64 位版本的 SQL Server 使用的内存

您可以使用性能监视器来查看由 64 位版本的 SQL Server 使用的内存页面。为此,监视以下性能计数器:
性能对象: 内存
计数器: 页/秒
有关如何使用此计数器以确定内存页的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
889654 如何确定合适的页面文件大小为 64 位版本的 Windows Server 2003 或 Windows XP
另外,可以通过监视以下性能计数器测量上的 SQL Server 的 64 位版本的页面的效果:
性能对象: 进程
计数器: 专用字节数
实例: sqlservr

性能对象: 进程
计数器: 工作集
实例: sqlservr
专用字节计数器测量是当前已提交内存。工作集计数器测量该进程当前已被占用的物理内存。64 位版本的 SQL Server 还使用以下性能计数器公开缓冲池中分配的内存:
性能对象: SQL Server: 内存管理器
计数器: 总服务器 Memory(KB)
注意64 位版本的 SQL Server 实例为命名的实例,性能对象的名称时,如下所示:
MSSQL $实例名称: 内存管理器
工作集计数器的值小于总服务器 Memory(KB) 计数器的值,如果至少一些属于缓冲池的内存工作集 SQL Server 从修剪。

分配后内存中的锁定页用户权限,并且重新启动 SQL Server 服务,SQL Server 进程的缓冲池仍然响应内存资源的通知事件,并动态地增加或减少了对这些事件的响应。但是,您无法看到缓冲池的内存的分配锁定在内存中的以下性能计数器:
  • 专用字节数计数器和工作集中在性能监视器计数器
  • 在任务管理器中的进程选项卡上的内存使用
这些页面将被锁定后,这些性能计数器表示 SQL Server 进程内部的内存分配,当这些分配未使用的缓冲池。SQL Server: 内存管理器性能对象的总的服务器 Memory(KB) 计数器能准确表示用于缓冲池分配的内存。

之后,将分配适合的 64 位版本的 SQL Server 实例"内存中锁定页"的用户的重要注意事项

应进行其他方面的考虑之后,将分配内存中的锁定页用户右。如果分配此用户权限的系统中配置不正确时,系统可能会变得不稳定,或遇到整个系统的性能下降。此外,在事件日志中可能会记录事件 ID 333。

如果这些问题联系 Microsoft 客户支持服务 (CSS),CSS 的工程师可能会要求您取消此用作 SQL Server 服务的启动帐户的用户帐户的用户权限。此步骤可能需要收集 CSS 工程师可以使用的必要配置多个选项用于 SQL Server 和系统运行的其他应用程序的重要性能数据。CSS 工程师收集的性能数据后,您可以在内存中的锁定页用户将权限指派给 SQL Server 服务的启动帐户。

分配的内存中的锁定页用户权限之前,确保您捕获性能监视器日志,以确定各种应用程序和服务安装在系统上的内存要求。这些应用程序还包括 SQL Server。要确定内存需求,请收集以下的比较基准信息:
  • 请确保正确设置最大服务器内存最小服务器内存选项。这些选项将反映 SQL Server 进程的缓冲池的内存要求。这些选项不包括在 SQL Server 进程内的其他组件分配的内存。这些组件包括:
    • SQL Server 工作线程
    • 多页分配器的 SQL Server 内存管理器
    • 不同的 Dll 和 SQL Server 进程加载 SQL Server 进程的地址空间中的组件
    • 备份和还原操作
  • Dll 和组件包括各种 OLE DB 提供程序,扩展存储的过程,用于sp_OACreate存储过程、 链接的服务器和 SQL Server CLR 的 Microsoft COM 对象。这些组件分配的内存低于 SQL Server 进程的地址空间的 nonbuffer 池区域。理想情况下确定最大的整个 SQL Server 进程可以使用的内存量,则必须减去为组件,请不要使用您想要使用的 SQL Server 进程的内存总量从缓冲池中分配的内存。然后,可以使用残值设置最大服务器内存选项。设置最大服务器内存最小服务器内存选项之前,应仔细检查 SQL Server 联机丛书中的"手动设置内存选项"主题。
  • 确定的其他应用程序和 Windows 操作系统组件的内存要求。应用程序可能包括其他 SQL Server 组件例如,SQL Server 代理程序,SQL Server 复制代理程序,SQL Server 报表服务、 SQL Server Analysis Services、 SQL Server Integration Services 和 SQL Server 全文搜索。执行备份操作和文件复制操作的应用程序可能使用大量的内存。考虑 (如大容量复制和快照代理程序生成文件 IO 操作。确定的最大服务器内存选项和最小服务器内存选项的值时,必须考虑所有这些应用程序的内存要求。可以使用的专用字节数计数器和每个进程的进程对象下的工作集计数器来确定一个特定进程的内存要求。
  • 默认情况下,内存中的锁定页用户权限已具备到内置的本地系统帐户。有关详细信息,请访问下面的 Microsoft 网站:
    http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
  • 如果域中的所有 SQL Server 进程的全局范围内使用的 Windows 用户帐户,确定通过使用组策略配置指派的用户权利。一个 32 位的 SQL Server 过程可能会使用此帐户作为启动帐户。不过,此帐户需要内存中的锁定页的用户权限启用地址窗口化扩展插件 (AWE) 功能。有关详细信息,请参阅 SQL Server 联机丛书中的"向 SQL Server 提供的最大内存量"的主题。
  • 您配置的最大服务器内存选项和多个 SQL Server 实例的最小服务器内存选项之前,请考虑 nonbuffer 池的每个实例的 SQL Server 的内存要求。然后,配置这些选项为每个 SQL Server 实例。
理想情况下,您可以收集在负载高峰期此比较基准信息。因此,您可以确定各种应用程序和组件,以支持峰值负载的内存要求。内存要求从一个系统到另一个系统,具体取决于活动和在系统运行的应用程序而异。

如何使用 SQL Server 环形缓冲区中的信息来确定内存条件在发生分页时

SQL Server 环形缓冲区中的信息可用于确定在服务器上的内存条件在发生分页时。您可以使用脚本,如下面的脚本来获取此信息。
SELECT CONVERT (varchar(30), GETDATE(), 121) as runtime,
DATEADD (ms, -1 * (sys.ms_ticks - a.[Record Time]), GETDATE()) AS Notification_time,  
 a.* , sys.ms_ticks AS [Current Time]
 FROM 
 (SELECT x.value('(//Record/ResourceMonitor/Notification)[1]', 'varchar(30)') AS [Notification_type], 
 x.value('(//Record/MemoryRecord/MemoryUtilization)[1]', 'bigint') AS [MemoryUtilization %], 
 x.value('(//Record/MemoryRecord/TotalPhysicalMemory)[1]', 'bigint') AS [TotalPhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/AvailablePhysicalMemory)[1]', 'bigint') AS [AvailablePhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/TotalPageFile)[1]', 'bigint') AS [TotalPageFile_KB], 
 x.value('(//Record/MemoryRecord/AvailablePageFile)[1]', 'bigint') AS [AvailablePageFile_KB], 
 x.value('(//Record/MemoryRecord/TotalVirtualAddressSpace)[1]', 'bigint') AS [TotalVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryRecord/AvailableVirtualAddressSpace)[1]', 'bigint') AS [AvailableVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryNode/@id)[1]', 'bigint') AS [Node Id], 
 x.value('(//Record/MemoryNode/ReservedMemory)[1]', 'bigint') AS [SQL_ReservedMemory_KB], 
 x.value('(//Record/MemoryNode/CommittedMemory)[1]', 'bigint') AS [SQL_CommittedMemory_KB], 
 x.value('(//Record/@id)[1]', 'bigint') AS [Record Id], 
 x.value('(//Record/@type)[1]', 'varchar(30)') AS [Type], 
 x.value('(//Record/ResourceMonitor/Indicators)[1]', 'bigint') AS [Indicators], 
 x.value('(//Record/@time)[1]', 'bigint') AS [Record Time]
 FROM (SELECT CAST (record as xml) FROM sys.dm_os_ring_buffers 
 WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR') AS R(x)) a 
CROSS JOIN sys.dm_os_sys_info sys
ORDER BY a.[Record Time] ASC

注意此查询是有效的 SQL Server 2005 中,并且 SQL Server 2008年。

您可以查询动态管理视图 sys.dm_os_process_memory,若要了解系统是否出现内存不足的情况中所提供的信息。有关详细信息,请参阅以下 MSDN Web 站点上的 SQL Server 2008年联机丛书引用:
http://msdn.microsoft.com/en-us/library/bb510747.aspx
SQL Server 2008 R2 最佳实践分析工具 (SQL Server 2008 R2 BPA) 提供了多个规则,以便检测可能导致工作集修整的 SQL Server 进程的情况。SQL Server 2008 R2 BPA 支持 SQL Server 2008年和 SQL Server 2008 R2。

收起该表格展开该表格
规则的软件规则标题规则说明对规则进行评估所依据的产品版本
SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA)
SQL Server 内存设置不正确


如果您运行 BPA 工具并收到警告,"数据库引擎-SQL Server 内存设置不正确,您需要检查此实例的 SQL Server 最大服务器内存设置,按照在部分中的建议"前您的重要注意事项内存中锁定页将用户分配权限,SQL Server 的 64 位版本的实例"的这篇文章。SQL Server 2008
SQL Server 2008 R2


SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA)操作系统文件和驱动程序的工作集修整需要更新如果您运行 BPA 工具并遇到错误时,"数据库引擎的运行系统文件和驱动程序需要更新的工作集中进行修剪,"您需要查看本文的"解决方案"一节中讨论的所有修补程序,并将其应用。
SQL Server 2008
SQL Server 2008 R2

SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA)相当大一部分的 SQL Server 内存已调出
如果您运行 BPA 工具,并且会遇到错误"数据库引擎的大部分 SQL Server 内存已被交换出去,"您需要查看本文的"解决办法"和"替代方法"部分,并采取适当的措施。
SQL Server 2008
SQL Server 2008 R2


Windows Server 2008 中,Windows Server 2008 R2 中的改进


Windows Server 2008 和 Windows Server 2008 R2 提高连续内存分配机制。Windows Server 2008 和 Windows Server 2008 R2 减小在一定程度上影响存储页面导出应用程序的工作集新内存请求到达时,就可以让这种改善。

以下是从 Microsoft 白皮书"前进中的内存管理在 Windows"改进的解释:

在 Windows Server 2008 中,从而大大提高物理上连续的内存分配。请求分配连续的内存才会更有可能成功,因为内存管理器现在动态替换页面,通常无需修剪工作集或执行 I/O 操作。此外,许多其他类型的页面 — — 例如内核堆栈和文件系统元数据页,以及其他 — — 现在是更换的候选。因此,在任何给定的时间更多连续的内存是普遍适用。此外,若要获得这种分配的成本将大大减少。
若要查看"前进中的内存管理在 Windows"白皮书,请访问下面的 Microsoft 网站:
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx
有关详细信息,请访问下面的 Microsoft 网站:
http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx
http://support.microsoft.com/kb/2001745
注意在基于 Windows Server 2008 的计算机上,您必须安装 SQL Server Service Pack 2 (SP2) 或更高版本的 SQL Server service pack。

本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不担保也不暗示或对这些产品的性能或可靠性做任何表态。

属性

文章编号: 918483 - 最后修改: 2014年6月20日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
关键字:?
kbsqlsetup kbsql2005engine kbexpertiseadvanced kbinfo kbmt KB918483 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 918483
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com