都内で働くSEの技術的なひとりごと

都内でサラリーマンやってます。マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。よろしくお願いします♪

SQL Server のメモリの状態を簡単に確認してみる

 SQL Server のメモリ状態のチェック方法に関して質問受けてた気がするので、記事にしちゃいます。眠いので、少し手抜きになってますがお許しください(=_=)
 メモリの状態を知る必要があるので、物理メモリ、SQL Server のメモリとか一度にチェックできるようにしたいと思います。OS 自体のメモリ状態の把握には、sys.dm_os_sys_memory を使用し、SQL Server のメモリ状態の把握には、sys.dm_os_sys_info を使用します。それでは、早速 SQL Server Management Studio で下記のクエリを実行してみましょう。

SELECT
    [総物理メモリサイズ(Kbyte) ] = osm.total_physical_memory_kb,
    [使用できる物理メモリサイズ(Kbyte) ] = osm.available_physical_memory_kb,
    [SQL Server がコミット済みにしてるメモリサイズ(Kbyte)] = osi.committed_kb,
    [SQL Server が使用可能だと思っているメモリサイズ(Kbyte)] = osi.committed_target_kb,
    [SQL Server が使用可能だと思っているメモリサイズ(Kbyte, committed_target_kbと同じだよ)] = osi.visible_target_kb,
    [メモリまだ余裕状態] = osm.system_high_memory_signal_state,
    [メモリもう余裕ない状態] = osm.system_low_memory_signal_state,
    [メモリの状態の説明] = osm.system_memory_state_desc
FROM
    sys.dm_os_sys_info osi CROSS APPLY sys.dm_os_sys_memory osm

f:id:koogucc11:20150901015654p:plain
f:id:koogucc11:20150901015757p:plain

 ざっくり説明すると、下記の通りです。

  • [総物理メモリサイズ(Kbyte)] と [使用できる物理メモリサイズ(Kbyte)]はみなさまご存じの通り( My Lenovo の場合 )。
    f:id:koogucc11:20150901014935p:plain
  • [SQL Server が使用可能だと思っているメモリサイズ(Kbyte)] は、OS の状況や、下図の MaxServerMemory の状態により変動します。
    f:id:koogucc11:20150901014253p:plain
  • [SQL Server がコミット済みにしてるメモリサイズ(Kbyte)] < [SQL Server が使用可能だと思っているメモリサイズ(Kbyte)] の場合は、SQL Server はどんどんメモリを獲得しようと活発に動き始めます。
  • [メモリまだ余裕状態]:1の場合は、メモリにまだ余裕がある状態です。[メモリもう余裕ない状態]:1の場合は、メモリに余裕のない状態です。

※夏には行けなかったので、秋になったらキャンプ行きたい♪今年は、ファイアグリル買わないとなぁ。どれがいいかなぁ。週末お店に見に行ってみよう♪

ユニフレーム(UNIFLAME) ファイアグリル 683040

ユニフレーム(UNIFLAME) ファイアグリル 683040

キャプテンスタッグ(CAPTAIN STAG) ヘキサステンレスファイアグリルM M-6498

キャプテンスタッグ(CAPTAIN STAG) ヘキサステンレスファイアグリルM M-6498

尾上製作所(ONOE) フォールディングファイアスタンド FF-35

尾上製作所(ONOE) フォールディングファイアスタンド FF-35