SQL Server 2012 SP2の潜在的なメモリ/構成の問題を掘り下げています。パフォーマンスカウンターとdbccのメモリステータス情報で少し奇妙に思われるものに遭遇しました。 dbcc memorystatusのバッファプールセクションからの情報は次のとおりです。
私が物事を正しく読んでいる場合、値は8 KBページの数です。 VM=であるサーバーには合計16 GBのメモリがあり、SQLサーバーには12GBの最小/最大値が割り当てられています。32751616
の "Target
"値VMホストのメモリの合計量です。262GB
について教えてください。サーバー上の「ターゲットページ」パフォーマンスカウンターを確認すると、同じことがわかります。番号。VMが正しく構成されていないことのヒントはあると思いますが、SQLサーバーがこれをどのように処理するかが本当に気になります。それはパフォーマンスに影響しますか/サーバーは実際に利用できるよりも多くのメモリをコミットしますか?
メモリマネージャーのことを見ると、より正常に見えます。
最大のメモリを超えるターゲットバッファプールに関する情報をウェブで検索してきましたが、あまり思いつきませんでしたので、どんな入力でも大歓迎です。
Value Buffer pool target
は8 KBページではありませんが、想定していたIs actually number of pages
は正確です。したがって、出力ごとに、ターゲットバッファープールのメモリは8 * 32751616になり、249Gになります。本当にばかげている
理由:
今度は、BCCターゲットがDBCC MEMORYSTATUSで値250 Gを示し、メモリマネージャーがターゲットがコミットされたときに12 Gを示す理由は、カウンターSQL Serverバッファーマネージャー:ターゲットページがSQL Server 2012以降では廃止されているためです。 Microsoftはこれについて特に言及していませんが、 SQL Server Buffer Manager Object BOL Document から見つけました。この記事を読んでも、カウンターターゲットページは廃止されているため見つかりません。 SQL Server 2008 R2に存在する同じカウンターも表示されます。
その他の理由としては、システムがNUMAノードを備えたNUMAシステムであると想定している場合があります。 MEMORYSTATUSの出力が表示されると、Node0、Node 1 ... Node 64などのさまざまなノードのメモリ割り当ての内訳が表示されるはずです。したがって、ターゲットにはすべてのNUMAノードのターゲットメモリ割り当てが含まれます。 MEMORYSTATUS出力のバッファプール。これには単一のエントリがあり、特定のノードに制限されません。さらに、この値は起動時に計算され、does not actually shows correct value after a period of time
なので参照しないでください。代わりにメモリマネージャの出力を参照してください。
編集:
buffer pool target pages on NUMA node
に関する質問のとおり、バッファプールの正しい値が表示されていないと思います。 4GのRAM=ターゲットページはシステムでほとんど何も実行されていない7979008です。これはまったく馬鹿げているので、このカウンタを確認しないようにお願いします。私はこのフィールドの専門家の1人が動作を確認し、特にNUMAシステムでバッファープールの出力とターゲットページを確認することは避けてください。計算(計算方法)は正しくありません。接続アイテムを上げることはできますが、 MSチームからの返答を得るには数か月かかります。
DBCC MEMORYSTATUSの出力のすべてが通常のユーザーにとって重要であるとは限りません。多くのものがMSの内部にあり、同じことに関する情報を提供しません。 SQL Serverのメモリ使用量を監視する場合は、以下のクエリを使用してください。
select
(physical_memory_in_use_kb/1024)Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024 )Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024 )Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
from sys. dm_os_process_memory
SQL Serverのターゲットメモリを本当に監視したい場合は、
SQLServer:memory Manager--Target Server Memory:これは、SQL Serverが取得しようとしているメモリの量です。
SQLServer:memory Manager--Total Server memoryこれは、SQL Serverが取得した現在のメモリです。
このリンク から取得できる他のカウンターもあります。
他の興味深いカウンターはほとんどありません
ページ読み取り/秒– 1秒あたりに発行される物理データベースページ読み取りの数。この統計には、すべてのデータベースにわたる物理ページ読み取りの総数が表示されます。物理I/Oは高価であるため、より大きなデータキャッシュ、インテリジェントインデックス、およびより効率的なクエリを使用するか、データベース設計を変更することにより、コストを最小限に抑えることができる場合があります
Free List Stalls/sec–フリーページを待機する必要があった1秒あたりのリクエスト数
PS:私が何かを逃したか、何かが不明確であるかどうか私に知らせてください
編集: ここに接続項目があります あなたの問題のために、MSの人々がそれについて言わなければならないことを待ちましょう。投票してください