web-dev-qa-db-ja.com

SQL Serverに割り当てられているRAMはどれくらいですか?

SQL Server 2005を使用すると、タスクマネージャを確認し、少なくとも、SQL Serverに割り当てられているメモリの量を簡単に確認できます。

SQL Server 2008では、SQLServer:Memory Manager/Total Server Memory(KB)パフォーマンスカウンターに16,732,760と表示されていても、ワーキングセットまたはコミットサイズが500 MBを超えることはありません。

タスクマネージャーでサーバーメモリを実際に表示する設定はありますか?または、SQL Serverでのメモリの使用方法を変更した結果ですか

15
AngryHacker

タスクマネージャーを信頼して、SQL Serverが使用しているメモリ量を通知することは絶対にありません(おそらく、ごく少量のメモリを搭載した32ビットシステムを覚えているでしょう)。この期間、タスクマネージャの使用を停止します。パフォーマンスカウンターを使用する-DMVを使用してパフォーマンスカウンターをクエリすることもできます。

SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';

これをクエリショートカットとして[ツール]> [オプション]> [環境]> [キーボード]> [クエリショートカット]に保存すると、タスクマネージャーから不正確な結果を取得するよりもはるかに速く、クエリウィンドウで正確な結果を取得できます。

また、次のクエリを使用して、メモリの負荷をチェックすることもできます(そしてそれに対して何かできるかどうかも確認できます)。

SELECT object_name, cntr_value
  FROM sys.dm_os_performance_counters
  WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';
26
Aaron Bertrand

@AaronBertrandの答えは素晴らしいです。 ここ からのより多くの情報を持つバリエーションがあります

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;

また、TaskManagerがタスクを実行できない理由についての優れたブログ投稿 here もご覧ください。

そして、より多くのパフォーマンスとDMVマジックを実現するには、先に進むことはできません Glenn BerryのSQLパフォーマンスブログ

6
Rory