如何使用 DBCC MEMORYSTATUS 指令來監視 SQL Server 2005 上的記憶體使用量

文章翻譯 文章翻譯
文章編號: 907877 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您 DBCC MEMORYSTATUS 命令的輸出。 這個命令經常用來疑難排解 Microsoft SQL Server 記憶體耗用問題。

本文將告訴您如需的記憶體用量摘要、 為彙總記憶體資訊、 輸入緩衝區通訊群組資訊、 輸入緩衝區集區資訊, 以及如需程序快取資訊為記憶體管理員的輸出項目 同時也說明有關全域記憶體物件、 需關於查詢記憶體物件的有關記憶體 brokers 有關最佳化, 和輸出。

INTRODUCTION

DBCC MEMORYSTATUS 命令提供的 Microsoft SQL Server 目前的記憶體狀態的快照集。 您可以使用這個命令從輸出如果要疑難排解在 SQL Server 記憶體耗用問題或是要疑難排解特定的 Out - of - 記憶體錯誤。 (多 Out - of - 記憶體錯誤自動列印錯誤記錄檔中的這個輸出) Microsoft 客戶支援服務也可能會要求在特定支援事件, 您執行這個命令如果您遇到錯誤, 其可能會與記憶體不足有關聯。

注意 效能監視器 ] (PerfMon) 及 「 工作管理員 」 會負責處理記憶體如果已啟用 Address Windowing 延伸 (AWE) 支援正確。

本篇文章描述一些資料, 您可以從 DBCC MEMORYSTATUS 命令的輸出取得。 本篇文章的數個區段包含專屬實作詳細資料, 將無法在這裡說明。 Microsoft 客戶支援服務不會回答任何問題或提供有關意義的詳細資訊的特定計數器超過在本篇文章提供的資訊。

其他相關資訊

重要事項 的 DBCC MEMORYSTATUS 命令是用來是用來 Microsoft 客戶支援服務的診斷工具。 受限於 service pack 和產品版本之間變更的輸出格式和詳細資料, 提供的層級。 功能, DBCC MEMORYSTATUS 命令提供可能會換成不同機制在較新版本產品。 因此, 在產品較新版本, 這個命令可能會失去作用。 此命令在變更或移除之前, 將不會進行任何額外的警告。 因此, 使用此命令的應用程式可能會中斷在沒有預警的情況下。

已經從舊版的 SQL Server 變更的 DBCC MEMORYSTATUS 命令輸出。 現在輸出包含數個區段, 而無法在舊版產品。

記憶體管理員

第一個區段的輸出是記憶體管理員。 本章節會顯示由 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)
本節中的元素如下所示:
  • VM 保留 : 這個值會顯示整體量, 保留 SQL Server 的虛擬位址空間 (VAS)
  • VM 認可 : 這個值會顯示整體 VAS, SQL Server 已認可的量 VAS 承諾, 已經與實體記憶體。
  • AWE 配置的 : 這個值會顯示整體的透過機制在 32 位元版本的 SQL Server AWE 配置的記憶體量 這值顯示整體的頁面鎖定的記憶體數量會消耗在 64 位元版本的產品或,
  • 保留的記憶體 : 這個值會顯示記憶體是保留給專用管理員連線 (DAC)
  • 保留在記憶體使用 : 這個值會顯示正在使用保留的記憶體

記憶體使用量的摘要

記憶體管理員 」 區段後面跟著的記憶體使用量為每個記憶體節點之摘要。 在, Non - Uniform 記憶體啟用存取 (NUMA) 系統會為每個硬體 NUMA 節點記憶體對應的節點項目。 將會在 SMP 系統, 記憶體單個項目節點。

請注意 記憶體的節點識別碼可能不會對應到硬體識別碼節點。
   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 節點沒有記憶體。

本節中的元素如下所示:
  • VM 保留 : 這個值會顯示由執行緒在這個節點上執行的是保留 VAS
  • VM 認可 : VAS, 是由執行緒在這個節點上執行的認可此值顯示
  • AWE 配置的 : 這個值會顯示透過 AWE 機制在 32 位元版本的產品配置的記憶體 或者, 這個值會顯示整體的鎖定分頁在 64 位元版本的產品, 是由記憶體數量。

    在 NUMA - 已啟用系統, 這個值可以是不正確或負值。 不過, 記憶體管理員 」 一節中整體 AWE 配置的 值為正確值。 使用 追蹤由個別 NUMA 節點, 是配置的記憶體: SQL Server 緩衝區節點 效能物件 請參閱 (如需詳細資訊, SQL Server 線上叢書 》 )。
  • multiPage Allocator : 這個值會顯示透過 multipage 配置器, 會配置由執行緒在這個節點上執行的記憶體 來自這個記憶體緩衝集區之外。
  • SinglePage Allocator : 這個值會顯示透過單一頁面配置器, 會配置由執行緒在這個節點上執行的記憶體 這個記憶體被竊從緩衝集區。
附註 VM 保留的 值與所有記憶體節點上的 VM 認可 值的總和會稍微小於對應的記憶體管理員 」 一節中所報告的值。

彙總記憶體

下一個區段包含針對每個 Clerk 型別, 以及針對每個節點 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)
請注意 這些節點識別碼對應到 NUMA 節點執行 SQL Server 電腦的設定。 節點識別碼包含可能的軟體 NUMA 節點之硬體 NUMA 節點上方的或頂端的 SMP 系統上所定義的。 檢視事件識別碼編號 17152 資訊來為每個節點, 尋找節點識別碼與 CPU 之間對應。 當您啟動 SQL Server 在 「 事件檢視器 」 應用程式日誌中會記錄此事件。

為 SMP 系統, 將會看到為每個 Clerk 型別只有一節。 本節與下列很類似。
   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 保留 : VAS 是藉由使用記憶體映射檔 API 的所有 Clerk 的這類保留此值顯示 這個 API 也稱為是 共用記憶體
  • SM 認可 : VAS, 是透過使用記憶體映射檔 API 的所有 Clerk 的這類認可此值顯示
您可以取得摘要資訊為每個型別之所有記憶體節點 Clerk 方法是使用 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 (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
  • 快取 : 這個值會顯示用於不同的快取緩衝區
  • 資料庫 (清除) : 這個值會顯示資料庫內容, 並不是已修改的緩衝區
  • 資料庫 (Dirty) : 這個值會顯示資料庫內容, 並已修改的緩衝區 這些緩衝區包含變更, 必須清除到磁碟
  • 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 中的項目。

    請注意 符合由於的動態本質的資訊, 可能不精確。 您可以使用 PerfMon 來監視 : 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)
本節中的元素如下所示:
  • 資源 : 顯示記憶體, Resource 物件會使用這個值 Resource 物件是用來由儲存引擎並為各種伺服器的結構。
  • 鎖定 : 該鎖定管理員使用此值顯示記憶體
  • XDES : 該異動管理員使用此值顯示記憶體
  • SETLS : 這個值會顯示記憶體可用來配置每個執行緒 Storage Engine - 特定結構使用執行緒區域儲存區
  • SE 資料集 Allocators : 這個值會顯示記憶體可用來為資料表存取透過 Access Methods 設定配置結構
  • SubpDesc Allocators : 這個值會顯示記憶體是用於管理子處理序為平行查詢、 備份作業、 還原作業、 資料庫操作、 檔案作業、 鏡像, 和非同步資料指標 這些子處理序是也稱為 平行處理程序
  • SE SchemaManager : 這個值會顯示記憶體, 用它來儲存特定 Storage Engine - 中繼資料架構管理員 ]
  • 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)
如果滿足 ?small? 查詢記憶體閾值, 大小和成本的查詢該查詢會放在小查詢佇列。 延遲較大的查詢, 是已在佇列中後面這個行為防止較小的查詢。

本節中的元素如下所示:
  • 會授與 : 這個值會顯示具有記憶體授權執行查詢
  • 等待 : 這個值會顯示, 以取得記憶體授權正在等候查詢
  • 可用 : 這個值會顯示可對查詢以供使用, 雜湊工作區, 而且工作區為排序緩衝區 定期更新 可用的 值。
  • 最大 : 這個值會顯示總緩衝區, 可以提供給所有的查詢, 以作為工作區
  • 限制 : 此值顯示為大查詢佇列查詢執行目標 與 (緩衝區) 最大 值這個值不同, 因為無法更新, 直到有達到佇列中變更此 最大值 (緩衝區) 值。
  • 下一個要求 : 此值顯示在緩衝區, 為下一個等候查詢記憶體的要求大小,
  • 等待 For : 這個值會顯示記憶體, 必須可供執行 下一個要求 值參考到該查詢的量 正在等待 For 值為 下一個要求 值乘空餘空間因數。 這個值可以有效地保證執行下一個等待查詢時可以使用特定數量的記憶體。
  • 成本 : 此值顯示的下一個等候查詢成本
  • 等候逾時 : 這個值以秒為單位, 為下一個等候查詢逾時, 顯示
  • 等待時間 : 此值顯示已耗用時間, 單位是毫秒下, 一個等候查詢已放入佇列, 因為
  • 最後一個目標 : 這個值會顯示整體記憶體限制為查詢執行 這個值是結合限制為大查詢佇列及佇列小查詢。

最佳化

下一節是摘要的使用者正嘗試在同一時間最佳化查詢的人。
   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)
查詢提交給伺服器以進行編譯。 編譯 (Compilation) 程序包括剖析、 algebraization 和最佳化。 查詢是歸類根據的, 每個查詢將會在編譯過程中耗用記憶體量。

請注意 此數量並沒有包含要執行查詢所需記憶體。

在查詢啟動時, 在多少個查詢可被編譯就沒有限制。 在記憶體耗用量會增加和達到臨界值, 查詢必須通過閘道來繼續執行。 就在每個閘道的同時編譯查詢漸進地降低限制。 每個閘道的大小取決於平台和載入。 閘道大小是選擇要延展性和輸送量最大化。

如果無法傳遞閘道, 將查詢該查詢會等待, 直到可用的記憶體。 或, 查詢將傳回逾時錯誤 (Error 8628)。 除此之外, 查詢可能會不取得閘道如果偵測到死結 (Deadlock) 或使用者取消查詢。 如果數個閘道, 將查詢傳遞查詢, 直到完成編譯 (Compilation) 處理序不會釋放較小的閘道。

這個行為讓同時發生只一些需要大量記憶體編譯。 除此之外, 最大這個行為化輸送量為較小的查詢。

記憶體 brokers

快取記憶體、 偷來的記憶體及保留記憶體控制項接著三個區段顯示記憶體 brokers 資訊。 這幾節將提供資訊, 只能以進行內部診斷。 因此, 這項資訊不是詳細在這裡。
   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)

屬性

文章編號: 907877 - 上次校閱: 2007年11月20日 - 版次: 1.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • 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 Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium-based Systems
關鍵字:?
kbinfo kbtshoot kbsql2005engine KB907877 KbMtzh kbmt
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。
按一下這裡查看此文章的英文版本:907877
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