web-dev-qa-db-ja.com

SQL Server 2012のワーキングセットのメモリが少ないのはなぜですか?

最近、忙しいウェブサイト用の100 GBのデータベースを以下から移行しました。

MS SQL 2008 Standard Edition R2
Windows Server 2008
48gb RAM

MS SQL 2012 Web Edition
Windows Server 2012
64gb RAM

working setメモリが2008サーバーと比較して比較的低いため、2012年のメモリの使用量は異なっているように見えます(下のスクリーンショットを参照)。

質問

これは正しいように見えますか、そして私は心配する必要がありますか? MSSQLが必要なだけのメモリにアクセスできることを確認したいと思います。 2つのサーバーが使用するWebサイトからの要求に関して、2つのサーバーの使用プロファイルは同じであるため、クエリのパターンや量は変更されていません。

SQL Server 2008 enter image description here

SQL Server 2012 enter image description here

SQL Server 2008のメモリ設定 enter image description here

SQL Server 2012のメモリ設定 enter image description here

ヒントをありがとう。

4
Andy W

SQL Server 2012は、メモリの制御と管理の方法を大幅に変更しました。 2012年以前は、max server memoryは8Kページしか制御していませんでしたが、現在ではそれ以上の制御が行われています。

SQLOSチームからのこれに関するいくつかの良い記事があります:

記事1 | 記事2 | 記事 | 第4条

これらの変更により、ワーキングセット、最大サーバーメモリなどに表示される内容は、バージョン間でほぼ確実に異なります。重要なのは、これらの数値の「通常」が何であるかに焦点を当て、特定のパフォーマンスの問題があるときに大幅に逸脱するかどうかを確認することです。システムが完全に正常に動作してパニックになっているときに数字を見るだけではなく、何かが間違っていると想定します(これは、ページの平均余命の300のようなマジック番号でよく起こります-システムのPLEは常に120)。

いくつかのベースラインといくつかのベースラインを設定するのに役立つクエリ:

SELECT TOP (10) page_type, 
  numpages = COUNT(*), 
  size_kb = 8*COUNT(*) 
FROM sys.dm_os_buffer_descriptors
WHERE database_id < 32767
GROUP BY page_type
ORDER BY size_kb DESC;

SELECT * FROM sys.dm_os_process_memory;

SELECT TOP (10) [type], 
  size_kb = SUM(pages_kb) 
FROM sys.dm_os_memory_clerks 
GROUP BY [type]
ORDER BY size_kb DESC;

SELECT * FROM sys.dm_os_performance_counters 
WHERE object_name LIKE '%Memory Broker%'
   OR object_name LIKE '%Buffer Manager%'
   OR object_name LIKE '%Memory Manager%'
   OR object_name LIKE '%Memory Node%';

役に立つかもしれない他のいくつかの投稿:

投稿1 | 投稿2 | 投稿

8
Aaron Bertrand