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

你的浏览器不受支持

你需要更新你的浏览器才能使用该网站。

更新到 Internet Explorer 的最新版本

如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

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

点击这里察看该文章的英文版: 907877
概要
本文讨论了 DBCC MEMORYSTATUS 命令的输出。此命令经常使用 Microsoft SQL Server 内存消耗问题进行故障排除。

本文介绍输出的元素的内存管理器、 内存使用情况的摘要、 聚合内存信息、 缓冲区分配信息、 缓冲区池的信息,和过程高速缓存信息。有关全局内存对象,有关查询内存对象、 优化,以及内存经纪人还介绍输出。
简介
DBCC MEMORYSTATUS 命令提供了 Microsoft SQL Server 的当前内存状态的快照。在 SQL Server 中的内存消耗问题进行故障排除,或特定的内存不足错误疑难解答,您可以使用此命令的输出。(多出的内存错误自动打印输出中的错误日志。Microsoft 客户支持服务还可能要求运行此命令在一个特定的支持事件的过程中如果遇到错误,可能与低内存条件相关联。

注意:性能监视器 (PerfMon) 和任务管理器不能说明内存正确如果启用地址窗口化扩展 (AWE) 的支持。

本文介绍了一些可以从 DBCC MEMORYSTATUS 命令的输出中获取的数据。这篇文章的多个部分包含未在此处介绍的专用实现详细信息。Microsoft 客户支持服务不会回答任何问题或提供有关含义的特定计数器超出这篇文章中提供的信息的详细信息。
更多信息
重要:DBCC MEMORYSTATUS 命令旨在成为 Microsoft 客户支持服务的诊断工具。输出的格式和所提供的详细程度可能会有所 service pack 和产品版本之间的更改。DBCC MEMORYSTATUS 命令提供的功能可能会被以后的产品版本中的不同机制。因此,在以后的产品版本中,该命令可能不再有效。之前该命令被更改或删除不会进行任何其他警告。因此,使用此命令的应用程序可能会中断且不发出警告。

DBCC MEMORYSTATUS 命令的输出已从 SQL Server 的早期版本。现在,输出包含几个部分,在早期的产品版本中不可用。

内存管理器

输出的第一节是内存管理器。此部分显示了 SQL Server 的总内存消耗。
   Memory Manager                 KB    ------------------------------ --------------------   VM Reserved                    1761400   VM Committed                   1663556   AWE Allocated                  0   Reserved Memory                1024   Reserved Memory In Use         0   (5 row(s) affected)
这一节中的元素如下所示:
  • 虚拟机保留: 此值显示 SQL Server 保留的虚拟地址空间 (VAS) 的总数量。
  • 虚拟机已提交: 此值显示 VAS 提交 SQL Server 的总数量。提交的 VAS 已经与物理内存。
  • AWE 分配: 此值显示通过 AWE 机制在 32 位版本的 SQL Server 上分配的内存的总数量。或者,此值的显示在 64 位版本的产品使用的锁定页面的内存的总数量。
  • 保留的内存: 此值显示为专用的管理员连接 (DAC) 保留的内存。
  • 保留内存中使用: 此值显示正在使用保留的内存。

内存使用情况的摘要

内存管理器部分中后, 跟内存的每个节点的内存使用情况的摘要。在非统一内存访问 (NUMA),启用系统中,将为每个硬件 NUMA 节点对应的内存节点项。在 SMP 系统中,将有一个单一的内存节点项。

注意:内存节点 ID 可能不对应硬件节点 id。
   Memory node Id = 0             KB    ------------------------------ --------------------   VM Reserved                    1757304   VM Committed                   1659612   AWE Allocated                  0   MultiPage Allocator            10760   SinglePage Allocator           73832   (5 row(s) affected)
注意:这些值显示在此 NUMA 节点上正在运行的线程分配的内存。这些值不是 NUMA 节点的本地内存。

这一节中的元素如下所示:
  • 虚拟机保留: 此值显示在此节点正在运行的线程保留 VAS。
  • 虚拟机已提交: 此值显示 VAS,致力在此节点上正在运行的线程。
  • AWE 分配: 此值显示了通过 AWE 机制在 32 位版本的产品分配的内存。或者,此值显示锁定的页上的 64 位版本的产品使用的内存的总数量。

    在启用 NUMA 的系统中,此值可以是不正确或负面。但是,内存管理器部分中的总体AWE 分配值是正确的值。若要跟踪单个 NUMA 节点分配的内存,请使用SQL Server: 缓冲节点的性能对象。(有关详细信息,请参阅SQL Server 联机丛书
  • 多页分配器: 此值显示在此节点正在运行的线程的情况下通过多页分配器分配的内存。此内存来自外部的缓冲池。
  • SinglePage 分配器: 此值显示在此节点正在运行的线程的情况下通过单页面分配器分配的内存。从缓冲池,这部分内存被盗。
注意:虚拟机保留值和内存中的所有节点上的VM 提交值的总和会略小于在内存管理器部分中报告的相应值。

聚合内存

下一节包含每个职员类型和每个 NUMA 节点聚合内存信息。对于已启用 NUMA 的系统,可能会看到类似于下面的输出。

注意:下表包含仅输出的一部分。
   MEMORYCLERK_SQLGENERAL (node 0)                                  KB    ---------------------------------------------------------------- --------------------   VM Reserved                                                      0   VM Committed                                                     0   AWE Allocated                                                    0   SM Reserved                                                      0   SM Commited                                                      0   SinglePage Allocator                                             592   MultiPage Allocator                                              2160   (7 row(s) affected)   MEMORYCLERK_SQLGENERAL (node 1)                                  KB    ---------------------------------------------------------------- --------------------   VM Reserved                                                      0   VM Committed                                                     0   AWE Allocated                                                    0   SM Reserved                                                      0   SM Commited                                                      0   SinglePage Allocator                                             136   MultiPage Allocator                                              0   (7 row(s) affected)   MEMORYCLERK_SQLGENERAL (Total)                                   KB    ---------------------------------------------------------------- --------------------   VM Reserved                                                      0   VM Committed                                                     0   AWE Allocated                                                    0   SM Reserved                                                      0   SM Commited                                                      0   SinglePage Allocator                                             728   MultiPage Allocator                                              2160   (7 row(s) affected)
注意:这些节点 Id 对应于正在运行 SQL Server 的计算机的 NUMA 节点配置。该节点 Id 包括在硬件 NUMA 节点或 SMP 系统上定义的可能的软件 NUMA 节点。若要查找每个节点的节点 Id 与 Cpu 之间的映射,请查看事件 ID 号为 17152 的信息。当您启动 SQL Server 时,将在事件查看器应用程序日志中记录此事件。

对于 SMP 系统) 中,您将看到每个职员类型只有一个部分。本部分将类似于以下。
   MEMORYCLERK_SQLGENERAL (Total)                                   KB    ---------------------------------------------------------------- --------------------   VM Reserved                                                      0   VM Committed                                                     0   AWE Allocated                                                    0   SM Reserved                                                      0   SM Commited                                                      0   SinglePage Allocator                                             768   MultiPage Allocator                                              2160   (7 row(s) affected)
有关共享内存是以下各节中的其他信息:
  • SM 保留: 此值显示保留了这种使用内存映射文件 API 的所有职员 VAS。此 API 被也称为共享的内存
  • SM 承诺: 此值显示 VAS 是提交的这种使用内存映射文件 API 的所有职员。
可以通过使用sys.dm_os_memory_clerks动态管理视图 (DMV) 获取内存中的所有节点的每个职员类型汇总的信息。若要执行此操作,请运行下面的查询:
select 	type,	sum(virtual_memory_reserved_kb) as [VM Reserved],	sum(virtual_memory_committed_kb) as [VM Committed],	sum(awe_allocated_kb) as [AWE Allocated],	sum(shared_memory_reserved_kb) as [SM Reserved], 	sum(shared_memory_committed_kb) as [SM Committed],	sum(multi_pages_kb) as [MultiPage Allocator],	sum(single_pages_kb) as [SinlgePage Allocator]from 	sys.dm_os_memory_clerks group by type

缓冲区分配

下一节显示在缓冲池中的 8 千字节 (KB) 缓冲区的分布。
   Buffer Distribution            Buffers   ------------------------------ -----------   Stolen                         553   Free                           103   Cached                         161   Database (clean)               1353   Database (dirty)               38   I/O                            0   Latched                        0   (7 row(s) affected)
这一节中的元素如下所示:
  • StolenStolen 内存描述服务器用于其他目的的 8 KB 缓冲区。这些缓冲区可作为通用的内存存储分配。服务器的不同组件使用这些缓冲区来存储在内部数据结构。惰性写入器进程不允许刷新 Stolen 从缓冲池中的缓冲区。
  • 自由: 此值显示提交当前未使用的缓冲区。这些缓冲区可以保存数据。或者,其他组件可能会请求这些缓冲区,然后将这些缓冲区标记为Stolen
  • 高速缓存: 此值显示为各种高速缓存使用的缓冲区。
  • 数据库 (清理): 此值显示数据库内容并且尚未修改的缓冲区。
  • 数据库 (更新): 此值显示具有数据库的内容和已修改的缓冲区。这些缓冲区包含更改,必须刷新到磁盘。
  • I/O: 此值显示正在等待挂起的 I/O 操作的缓冲区。
  • Latched: 此值显示锁定缓冲区。线程将读取或修改网页的内容时,已被锁定缓冲区。从磁盘读取页时,也已锁定缓冲区或向磁盘写入。锁闩用于维护物理页中的数据一致性,同时正对其进行读取或修改。锁用于维护逻辑和事务处理的一致性。

缓冲区池详细信息

您可以使用sys.dm_os_buffer_descriptors DMV 获取缓冲区池缓冲区的数据库页的详细的信息。然后,您可以获取有关所使用的其他服务器用途使用sys.dm_os_memory_clerks DMV 的缓冲池页的详细的信息。

下一节列出了有关缓冲区池以及其他信息的详细信息。
   Buffer Counts                  Buffers   ------------------------------ --------------------   Committed                      1064   Target                         17551   Hashed                         345   Stolen Potential               121857   External Reservation           645   Min Free                       64   Visible                        17551   Available Paging File          451997   (8 row(s) affected)
这一节中的元素如下所示:
  • 已提交: 此值显示提交的总缓冲区。提交的缓冲区具有与其关联的物理内存。已提交值是缓冲池中的当前大小。此值包括如果启用 AWE 支持分配的物理内存。
  • 目标: 此值显示目标大小的缓冲池。如果目标值是比已提交值大,缓冲池在不断增加。如果目标值是小于已提交的值,收缩的缓冲池。
  • Hashed: 此值显示数据页和索引页存储在缓冲池中。
  • 被盗可能: 此值显示了可以从缓冲池被盗最多页数。
  • ExternalReservation: 此值显示已预留的查询将会执行排序操作或哈希操作的页面。这些页未失窃。
  • 最小可用: 此值显示的页面缓冲池试图对可用的列表。
  • 可见性: 此值显示同时可见的缓冲区。这些缓冲区可以直接访问一次。此值是通常等于总缓冲区。但是,当启用 AWE 支持时,此值可能小于总缓冲区。
  • 可用的分页文件: 此值显示了可用于提交的内存。此值表示为 8 KB 缓冲区的数目。有关详细信息,请参阅 Windows API 文档中的"GlobalMemoryStatusEx 函数"主题。

过程高速缓存

下一节介绍的过程高速缓存的构成。
   Procedure Cache                Value   ------------------------------ -----------   TotalProcs                     4   TotalPages                     25   InUsePages                     0   (3 row(s) affected)
这一节中的元素如下所示:
  • TotalProcs: 此值显示目前在过程高速缓存中的缓存的对象总数。此值将与sys.dm_exec_cached_plans DMV 中的条目匹配。

    注意:由于此类信息的动态特性,匹配项可能不精确。您可以使用性能监视器来监视SQL Server: 计划高速缓存对象和sys.dm_exec_cached_plans DMV 的缓存对象如触发器、 过程和特殊对象的类型的详细信息。
  • TotalPages: 此值显示的累积页面您必须将所有已缓存的对象存储在过程高速缓存。
  • InUsePages: 此值显示属于当前正在运行的过程的过程高速缓存中的页面。这些页不能放弃。

全局内存对象

下一节包含有关各种全局内存对象的信息。本节还包含多少内存的全局内存对象,请使用有关的信息。
   Global Memory Objects          Buffers   ------------------------------ --------------------   Resource                       126   Locks                          85   XDES                           10   SETLS                          2   SE Dataset Allocators          4   SubpDesc Allocators            2   SE SchemaManager               44   SQLCache                       41   Replication                    2   ServerGlobal                   25   XP Global                      2   SortTables                     2   (12 row(s) affected)
这一节中的元素如下所示:
  • 资源: 此值显示资源对象使用的内存。资源对象用于存储引擎和服务器范围内的各种结构。
  • 锁定: 此值显示的内存,则锁管理器使用。
  • XDES: 此值显示的内存,则事务管理器使用。
  • SETLS: 此值显示了用于分配使用线程本地存储区的特定于存储引擎的每个线程结构的内存。
  • SE 数据集分配器: 此值显示的内存,用于通过访问方法设置访问表的分配结构。
  • SubpDesc 分配器: 此值显示了用于管理子过程并行查询、 备份操作,还原操作、 数据库操作、 文件操作、 镜像和异步游标的内存。这些子过程也称为是并行的进程
  • SE SchemaManager: 此值显示了架构管理器用于存储特定于存储引擎的元数据的内存。
  • SQLCache: 此值显示的内存,用于存储和预准备语句的特殊语句的文本。
  • 复制: 此值显示了服务器使用内部复制子系统的内存。
  • ServerGlobal: 此值显示全局服务器内存对象,通常由多个子系统。
  • XP 全局: 此值显示了扩展存储的过程使用的内存。
  • 排序表: 此值显示的内存中排序表使用。

查询内存对象

下一节描述查询内存授权信息。此部分包含的查询内存使用情况的快照。查询内存也称为是工作区内存
   Query Memory Objects           Value   ------------------------------ -----------   Grants                         0   Waiting                        0   Available (Buffers)            14820   Maximum (Buffers)              14820   Limit                          10880   Next Request                   0   Waiting For                    0   Cost                           0   Timeout                        0   Wait Time                      0   Last Target                    11520   (11 row(s) affected)   Small Query Memory Objects     Value          ------------------------------ -----------    Grants                         0   Waiting                        0   Available (Buffers)            640   Maximum (Buffers)              640   Limit                          640   (5 row(s) affected)
如果大小和成本的查询满足"小"的查询内存阈值,查询放在小查询队列。此行为可防止较小查询延迟背后大队列中已有的查询。

这一节中的元素如下所示:
  • 授予: 此值显示了内存授予运行查询。
  • 等待: 此值显示正在等待获取内存授予的查询。
  • 可用: 此值显示,可供查询供使用作为哈希区和作为排序工作区缓冲区。定期更新的可用值。
  • 最大: 此值表示可用作工作区的所有查询给定的总缓冲区。
  • 限制: 此值显示为大查询队列查询执行目标。此值与(缓冲区) 的最大值,因为在队列中的更改之前,还未更新(缓冲区) 的最大值。
  • 下一个请求: 此值显示请求的内存大小,缓冲区,为下一步等待的查询中。
  • 等待: 此值显示必须可用于运行的查询的下一个请求的值所引用的内存量。等待值为预留空间系数相乘的下一个请求的值。此值有效地保证了下一步等待查询运行时将导致了特定数量的内存可用。
  • 成本: 此值显示的下一个等待的查询的成本。
  • 超时: 此值显示超时以秒为单位,为下一步等待查询。
  • 等待时间: 此值以毫秒为单位,显示经过的时间,因为下一个等待的查询被放入队列中。
  • 最后一个目标: 此值显示查询执行的总内存限制。此值是大的查询队列和小查询队列的组合的限制。

优化

下一节是试图在同一时间优化的查询的用户的摘要。
   Optimization Queue             Value   ------------------------------ --------------------   Overall Memory                 156672000   Last Notification              1   Timeout                        6   Early Termination Factor       5   (4 row(s) affected)   Small Gateway                  Value   ------------------------------ --------------------   Configured Units               8   Available Units                8   Acquires                       0   Waiters                        0   Threshold Factor               250000   Threshold                      250000   (6 row(s) affected)   Medium Gateway                 Value   ------------------------------ --------------------   Configured Units               2   Available Units                2   Acquires                       0   Waiters                        0   Threshold Factor               12   (5 row(s) affected)   Big Gateway                    Value   ------------------------------ --------------------   Configured Units               1   Available Units                1   Acquires                       0   Waiters                        0   Threshold Factor               8   (5 row(s) affected)
查询提交给服务器进行编译。编译过程包括分析、 algebraization 和优化。查询分为基于的每个查询将在编译过程中使用的内存量。

注意:此值不包括运行查询所需的内存。

当查询开始时,有是没有限制的可编译查询数。内存消耗增加,并达到某个阈值,该查询必须通过网关版以继续。每个网关后逐渐衰减的同时已编译查询的限制。每个网关的大小取决于平台和负载。选择网关的大小可以实现可缩放性和吞吐量最大化。

如果查询不能通过一个网关,查询将等待,直到有可用的内存。或者,该查询将返回超时错误 (错误 8628)。此外,查询可能无法获得一个网关,如果用户取消了查询或检测到死锁。如果查询通过多个网关,查询编译过程完成之前不能释放的较小的网关。

此行为可让只有几个内存密集型编译在同一时间发生。此外,这种行为最大化吞吐量较小的查询。

内存经纪人

接下来的三部分显示有关内存经纪人信息控件缓存内存、 被盗的内存和保留的内存。以下各节提供的信息仅用于内部诊断机制。因此,此信息不在此处详细说明。
   MEMORYBROKER_FOR_CACHE           Value   -------------------------------- --------------------   Allocations                      1843   Rate                             0   Target Allocations               1843   Future Allocations               0   Last Notification                1   (4 row(s) affected)   MEMORYBROKER_FOR_STEAL           Value   -------------------------------- --------------------   Allocations                      380   Rate                             0   Target Allocations               1195   Future Allocations               0   Last Notification                1   (4 row(s) affected)   MEMORYBROKER_FOR_RESERVE         Value   -------------------------------- --------------------   Allocations                      0   Rate                             0   Target Allocations               1195   Future Allocations               0   Last Notification                1   (4 row(s) affected)
内存状态 memorystatus SQL Server 2005 的内存 dbcc

Warning: This article has been translated automatically

属性

文章 ID:907877 - 上次审阅时间:03/15/2015 10:23:00 - 修订版本: 2.0

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • kbsqlsetup kbsql2005engine kbtshoot kbinfo kbmt KB907877 KbMtzh
反馈