none
物理メモリ増設時のmax server memory の設定値について RRS feed

  • 質問

  • 現在SQLServerが稼動しているDBサーバの物理メモリは4GBなのですが、パフォーマンス改善のためこれを32GBに増設しようと考えています。
    この時、増設したメモリをSQLServerに最適化するためには、max server memory の値を適切に設定する必要があると認識しています。

    【前提】
     ・OS:WindowsServer2008 R2 64bit
     ・SQLServer:SQLServer2005 std.
     ・現在のmax server memoryの値は、デフォルトの2GBのまま。
     ・このサーバはDBサーバとしてのみ動作し、他のアプリケーション(Webサーバなど)は動作しない。
      よって、OSが使用するメモリ以外はSQLServerのバッファプールに最大限割り当てたい。

    【確認したい事項】

    1.max server memory の最適値は、「OSが使用するメモリの最大量」を見積り、全メモリ量からその分を引いた数値となる、と認識しているのですが、それで正しいでしょうか。

    2.上記1が正しいとすれば、「OSが使用するメモリの最大量」を見積るためにどのような方法を用いれば良いでしょうか。

    3.上記1が正しくないとすれば、max server memory を設定するには、何に基づけば良いでしょうか。 (もしかしてそもそも設定不要?)


    あちこち調べたのですが解決することができませんでした。

    何かアドバイスいただけると幸いです。

    どうぞよろしくお願いいたします。

    2012年3月5日 12:10

回答

  • max server memoryのデフォルトは確か2TBで、使うだけ使う設定です。
    メモリ領域は正確に言うとバッファプールの他にもMem To Leaveという領域もあります。
    またOSが使用するメモリの最大量を見積もるのはなかなか難しいと思いますが、
    現在動いているサーバではどれくらいSQL Server以外がメモリを使っているのかを
    パフォーマンスモニタから調査してみてはいかがでしょうか。
    その分を確保しておくのが最低ラインかと思います。
    以下を参照するとわかりやすいかと思います。

    http://blogs.msdn.com/b/jpsql/archive/2012/02/06/do-s-amp-dont-s-12-max-server-memory.aspx

    • 回答としてマーク 梅埜 顕 2012年3月5日 13:32
    2012年3月5日 12:56
    モデレータ
  • 規定値にするとメモリをどんどん使ってしまうのでmax server memoryを設定するに越したことはないです。
    現状のサーバの状況からおおよそ決められると思います。
    リンク先にも以下のような記載があるので、参考にしてください。

    設定するサイズは、物理メモリサイズから、Windows OS を含む SQL Server 以外が使用するであろう最大サイズを差し引いたサイズを指定します。これを基準として、物理メモリの空き (Memory: Available MBytes) やページングの発生 (Pages/sec) を観察します。max server memory 設定後もページングが発生している場合には、max server memory の設定をさらに小さくします。ページングが発生せず、物理メモリに一定量の空きが常にある場合には、max server memory の値を大きくすることができます。
    • 回答としてマーク 梅埜 顕 2012年3月6日 2:43
    2012年3月5日 16:02
    モデレータ

すべての返信

  • max server memoryのデフォルトは確か2TBで、使うだけ使う設定です。
    メモリ領域は正確に言うとバッファプールの他にもMem To Leaveという領域もあります。
    またOSが使用するメモリの最大量を見積もるのはなかなか難しいと思いますが、
    現在動いているサーバではどれくらいSQL Server以外がメモリを使っているのかを
    パフォーマンスモニタから調査してみてはいかがでしょうか。
    その分を確保しておくのが最低ラインかと思います。
    以下を参照するとわかりやすいかと思います。

    http://blogs.msdn.com/b/jpsql/archive/2012/02/06/do-s-amp-dont-s-12-max-server-memory.aspx

    • 回答としてマーク 梅埜 顕 2012年3月5日 13:32
    2012年3月5日 12:56
    モデレータ
  • ElanLilacさん、ご返信有難うございます!

    なるほど、そもそもデフォルトでは無かったんですね。

    では、まずはデフォルトの2TBに設定してみることにします。

    どうも有難うございました!

    2012年3月5日 13:32
  • 規定値にするとメモリをどんどん使ってしまうのでmax server memoryを設定するに越したことはないです。
    現状のサーバの状況からおおよそ決められると思います。
    リンク先にも以下のような記載があるので、参考にしてください。

    設定するサイズは、物理メモリサイズから、Windows OS を含む SQL Server 以外が使用するであろう最大サイズを差し引いたサイズを指定します。これを基準として、物理メモリの空き (Memory: Available MBytes) やページングの発生 (Pages/sec) を観察します。max server memory 設定後もページングが発生している場合には、max server memory の設定をさらに小さくします。ページングが発生せず、物理メモリに一定量の空きが常にある場合には、max server memory の値を大きくすることができます。
    • 回答としてマーク 梅埜 顕 2012年3月6日 2:43
    2012年3月5日 16:02
    モデレータ
  • ElanLilacさん、ご返信有難うございます!

    メモリを32GBに増設後、まずはmax server memoryを28GBくらいに設定し、パフォーマンスモニタで計測してみたいと思います。

    有難うございました。

    2012年3月6日 2:45