https://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx

  • 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。如果您发现了错误并希望帮助我们提高机器翻译技术,请完成文章末尾的在线调查。

查看原始的英语文章: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) 的总数量。
  • 虚拟机已提交︰ 此值显示 SQL Server 已提交的 VAS 的总数量。提交的 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) 

这一节中的元素如下所示︰

  • Stolen: Stolen 内存描述服务器用于其他目的的 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) 

属性

文章 ID:907877 - 上次审阅时间:2017年2月25日 - 修订版本: 1

这篇文章中的信息适用于:

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

转载于:https://www.cnblogs.com/zengkefu/p/6984416.html

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

  1. 翻译:SQL Server 2005中的覆盖索引

    原文地址:http://www.sql-server-performance.com/articles/per/benchmark_covering_indexes_p1.aspx 覆盖索引是非聚集索 ...

  2. SQL Server 2005中的分析服务功能[转]

    XXXX(不知道为什么CnBlogs上的人这么抵制XXXX,呵呵--)上推出了"体验SQL Server 2005"活动,当然啦,一些关于SQL Server 2005的文章被翻译 ...

  3. 如何在SQL Server 2005中使用作业实现备份和特定删除

    步骤如下:   1.需要启动服务Sql Server Agent(sql server 代理)   2.新建作业,名称为backupDatabase   3.选择步骤,点击"新建" ...

  4. SQL Server 2005中创建CLR存储过程

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解 ...

  5. SQL Server 2005中更改sa的用户名和密码

    修改数据库SA账号名称的代码如下: 代码如下: Alter LOGIN sa DISABLE Alter LOGIN sa WITH NAME = [systemAccount] "syst ...

  6. SQL Server 2005中的SQLCMD工具使用

    SQL Server 2005中的SQLCMD工具使用 1.你可以用SQLCMD执行交互式动作,如: C:\sqlcmd>sqlcmd 1> SELECT name from sys.da ...

  7. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法

    Server 2005 专用管理员连接 (DAC) 使用技巧 1 什么是专用管理员连接? SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用. 2 ...

  8. SQL Server 2005 中的商务智能和数据仓库

    微软发布了SQL Server 2005,对于微软与BI来说这是一个非常重要的版本,它完善了微软在BI方面的产品线.SQL Server 2005以及 Visual Studio .net2005的整 ...

  9. 使用 SQL Server 2005中的 CLR 集成

    Balaji Rathakrishnan Christian Kleinerman Brad Richards Ramachandran Venkatesh Vineet Rao Microsoft ...

最新文章

  1. 有效感受野--Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
  2. libevent和libev的区别对比(二)
  3. 计算机中列英语,计算机中常用的英文缩写有哪些?
  4. ORA-00060 Deadlock detected
  5. 【机器学习】Kmeans聚类
  6. 用rem来做响应式开发
  7. 如何用记事本编写运行java程序?
  8. 混合云备份服务 > 数据迁移 > 文件同步 > ECS同步到NAS教程 > 文件同步
  9. mac编译安装apache+php+mysql开发环境
  10. Asp.net主题(theme)和皮肤(skin)的使用
  11. 一文看尽 TensorFlow“奋斗史”!| CSDN 博文精选
  12. Git 仓库配置不当 日产北美公司的源代码遭泄露
  13. Ext-数据交换-ajax
  14. 网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语
  15. Matlab入门:界面认识
  16. 【something】简单的平均脸制作
  17. SAP的增强(enhancement)
  18. 单片机c语言延迟子程序,单片机通用延时子程序
  19. 千万别小看一个面相好的女人!
  20. AR体感互动产品大合集

热门文章

  1. char与varchar的区别
  2. 学校计算机机房好处,浅谈学校计算机机房维护
  3. 手写java_手写JAVA虚拟机(二)——实现java命令行
  4. app获取个人信息是否合法_【关注】如何界定App违法违规收集个人信息?认定方法来了!...
  5. php语句中两个if语句,如何在PHP中组合两个IF语句
  6. android service intent-filter,如何在permission中加入intent-filter过滤器获取NotificationListenerService权限...
  7. python画指数函数图像_python实现画出e指数函数的图像
  8. 不同模块下包重名怎么解决_模块
  9. php sql中regexp,[NCTF2019]SQLi(regexp注入)
  10. 程序员在职场中想快速升职,这4种潜质少不得!