SQL Serverで使用されるメモリについて

このQ&Aのポイント
  • SQL Serverのメモリ使用量に関する疑問と、パフォーマンス監視におけるメモリ制限の考慮について解説します。
  • SQL Serverのメモリサイズは積んでいるメモリによって変わります。現在の設定では60%以上のメモリ使用率が常に維持されています。
  • メモリ使用率を60%未満に抑えるためには、オプションで使用メモリの上限値を設定することができますが、可能な限りメモリを制限せずに使用したいと考えています。
回答を見る
  • ベストアンサー

SQL Serverで使用されるメモリについて

お世話になります。 Windows Server2012 Standard SQL Server2008 R2 Standard 当該サーバー機のスペックは CPU:Intel Xeon E5-2403 1.80GHz メモリ:8GB です。 タスクマネージャーで使用メモリを確認したところ、常にSQL Server だけで3.8GB程使われており、トータルでは5.3GBとなっておりました。 ※67~8%が常に使われている状況。 SQL2008のシステム要件を見てみると、最小で1GB以上、推奨は 4GB以上となっております。 <質問> SQLで使用されるメモリサイズは、積んでるメモリサイズによって 変わるのでしょうか。 例えば、元々4GBしか積んでなければ、SQLでは2GBぐらい使われるとか。 今回、サーバーにてパフォーマンス監視をすることとなり、社内規定で メモリは「1時間の平均で60%を超えたら警告」となっております。 ですが、現状は常に67~8%なので既に超えている状況です。 調べたところ以下のような情報がありました。 https://support.microsoft.com/en-us/kb/321363/ja?wa=wsignin1.0 オプションで使用メモリの上限値を設定できるようなので、ここで設定する ことにより、60%未満に抑えられそうなのですが、できればメモリは制限せずに 使えるだけ使いたいところです。 ご教示の程、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • foitec
  • ベストアンサー率43% (1079/2453)
回答No.1

>SQL Server2008 R2 Standard 引用先の情報は SQL Server 2008は該当しませんね。 まぁ設定方法は同じでしょうけれど。 SQL Server2008ではOSが32bitの場合であっても AWE (Address Windowing Extensions) がサポートされているので 4GB を超える物理メモリを使用できます。 さて、Mircosoft SQL Serverは最大サーバメモリを絞ってないと、すぐに実メモリを食いつぶしてしまうようです。 主にDBのキャッシュとして使われますがこれは基本的に開放されることは無く、空きメモリがほとんど無い状態となってします。 マイクロソフト側はこれに関して、「空きメモリが減ってもDBサーバとしての性能に影響はない」と言っています。 確かに「DBサーバ」には影響が無いように見えますが、他の動作にかなり影響します。 例えばメンテナンスでRAIDユーティリティを動かしたり、リモートメンテナンス時のアクセスがかなり緩慢になりますね。 一時的にSQLの仕様メモリを開放する方法です。 「オブジェクトエクスプローラー「を右クリックし、プロパティを選択します。 「ページの選択」から「メモリ」を選び、「最大サーバーメモリ」のサイズを変更します。 メモリ量を設定したら「OK」をクリックして完了です。 で、最後に質問の回答 >SQLで使用されるメモリサイズは、積んでるメモリサイズによって変わるのでしょうか。 最大サーバーメモリーサイズを設定していない(デフォルト)の場合、搭載メモリサイズによって変わります。 利用可能なメモリサイズの空容量が10MBから4MBになるまでどんどん使用してしまいます。

naoto0216
質問者

お礼

foitecさま 早速試してみました。 とりあえず、「最大サーバーメモリ」を2GBに変更してみました。 変更後、しばらくは(使用されていた3.8GBが2GBまで下がるまで) 負荷がかかっていたようで、その間はSQLへのアクセス等が重くなりましたが 2GBに落ち着いたら、変更前とそれほど変わりませんでした。 その後、3GBに変更したので、少しずつ食い潰していって 数日後には上限3GBで落ち着くんだと思います。 色々勉強になりました。 ありがとうございました。

naoto0216
質問者

補足

foitecさま ご回答ありがとうございます。 >引用先の情報は SQL Server 2008は該当しませんね。 失礼しました。よくよく見たら2000と2005の情報でした。 >一時的にSQLの仕様メモリを開放する方法です。 についてですが、現状SQL Serverだけで3.8GBのメモリが使用 されている状態なのですが、この状態で「最大サーバーメモリ」を 仮に3GBに変更した場合、このタイミングで0.8GBが解放されると いうことでしょうか。 SQL以外では約1.5GBメモリを食っているようです。 通常のメモリ使用量(SQL、その他含め)を全体の60%未満(約4.74GB未満) にしたいので「最大サーバーメモリ」を3GBにしたいと考えているのですが、 現状3.8GB使用されているメモリを3GBに変更することによって SQLの使用感というかレスポンスが大きく変わってしまうって ことはあるのでしょうか。 度々の質問すみません。 宜しくお願い致します。

関連するQ&A

  • SQL Server 2008 R2 のメモリ

    SQL Server 2008 R2 の使用環境は Xeon E5540 2.53GHz の内1コアを割り当てています。 メモリは4GB、Windows 2008 R2 Server 64bit です。 同時接続数は高々20に満たない程度なのですが、元々ここで質問させていただいた巨大なテーブル自体、サイズが4GBを超えていますので、メモリ不足は当初から懸念しておりました。 ここでご教授いただいたSQL Server 2008 R2 の推奨スペックから考える限り、メモリ不足は深刻かと思われるのですが、実際問題としてどの程度搭載してやれば快適とまでは行かないまでも、そこそこ不自由なく動作するものでしょうか? (多ければ多いほど良いというのは100も承知なのですが、諸般の事情であまり予算が裂けません)

  • SQL Serverのメモリ設定

    現在MS SQL Server7.0を使用したDBサーバを運用しています。 CPU4ユニット、物理メモリ1GBを搭載しているのですが、先日 テーブル更新バッチ(8万件処理)を実行中に異常終了してしまいました。 タスクマネージャに表示されていた利用可能メモリが9MBしかなく、 SQLServerのメモリ使用量が883MBになっていたため、メモリ不足の ためバッチがダウンしたという判断をしました。実際のところ SQL Serverのメモリ設定(動的設定)が4MB~885MBの間で設定して ありました。これはおそらく、SQLServerインストール時に自動設定 されたものだと思われますが、他アプリケーションのパフォーマンスを 著しく劣化させているためメモリ設定の最大値を支障が出ない程度に 下げたいのですが、どの程度下げればよいのか数値がなかなか導き出せ ません。何かよい方法(計算方法など)をご存知の方がいらっしゃれば ば教えていただけないでしょうか。 よろしくお願いいたします。 サーバ構成 Fujitsu Primergy CPU P(3)866 ×4 メモリ:1024MB HDD:40×4 OS:WINDOWS NT Enterprise Edition SQL:Microsoft SQL Server 7.0

  • SQL Serverのリンクサーバーの

    こんにちは。 現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。 いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。 Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。 このmdbは別のシステムで使用されており、常に更新されています。 今のところ、SQL Serverのタスクを用いて定期的(10分おきとか)にこのリンクサーバー上のmdbの情報を読み取り、SQL Server上に作ったテーブルを更新しているのですが、これだと情報を取りにいった時にタスクの更新が行われるまで、古い情報を取得することになります。 リアルタイムで取得することを考えた場合、 C#で作成したアプリケーションでこのSQL Serverにアクセスした時に直接リンクサーバーに対してSQL文を実行するという方法を考えているのですが、いろいろ検索しましたが探すことが出来ませんでした。 この様な方法がありましたら教えていただけないでしょうか?

  • SQL server 2012のライセンスに関して

    SQL server 2012のライセンスとEditionに関する質問です。 Windows7のマシンをデータベースサーバとし、Windows7のマシン2台を クライアントとして使用する小規模なシステムを構築しようとしています。 Windows7マシンはCPUがCoreTM i5-3470程度の今時の法人用モデルの PCを3台とも使用します。 また、SQL server 2012はStandard Editionの使用を予定しております。 そこで質問ですが、 ・この場合、どの製品を購入するのが安価で済ませられるのでしょうか? サーバーライセンス×1とCAL×2でいいのでしょうか? ・稼動後、もし、データベースサーバが、Windows server 2008R2(2CPU)と なった場合、Windows7のサーバライセンスをアンインストールし、新しい サーバにインストールし直せば使用できるのでしょうか? それとも、サーバライセンスの追加購入かコアパックの購入が必要でしょうか? ・データベースをSQL server 2008R2で使用したい場合、購入するディスクキットを SQL server 2008R2用を購入すれば、SQL server 2008R2 Standard Edition として、使用できるのですか? 以上、よろしくお願い致します。

  • SQLサーバの使い方について。

    SQLサーバの使い方について。 起動させた際に、Windows認証やSQLサーバ認証などが出てくるのはなぜでしょうか。 また、上手く起動した後にも細かな設定などがあり、どのように使用していくのかがいまいち分かりませんでした。まずは、簡単な正規化などから取り組んでみたいのですが・・・。 単に、データベースを用いるだけならばACCESSなどでも可能でしょうが、会社側からはSQLサーバを使用して欲しいと言われています。 SQLサーバを使用されている方がいましたらお願い致します。

  • SQL Server 2008 R2 Total

    SQL Server 2008 R2 に関してご質問がございます。 Windows Server 2008 R2、メモリ 8GB環境で SQL Server 2008 R2 Standard Edition を使用しています。データベースは 12GBが1つ、4GBが1つ、2GBが1つあります。 SQL Server が物理メモリを 8GB近く消費しているのですが、Total Server Memoryの値が搭載している物理メモリと同じ値(8.192GB)に達すると月に2,3度CPU負荷が100%に達しデータベースへ接続できない現象が発生しています。SQL Server ログにはこのようなメッセージが残っています。 ソース spid23s メッセージ Memory Manage(以下省略) ソース サーバー メッセージ Error: 17887, Severity: 10, State: 1. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc are skipped. ソース ログオン メッセージ エラー: 17803、重大度: 20、状態: 13。 ソース ログオン メッセージ There was a memory allocation failure during connection establishment. Reduce nonessential memory load, or increase system memory. The connection has been closed. (以下省略) これをうけて、max server memory の設定変更を検討しております。 SQL Server のプロパティはこのようになっています。 min server memory 0 max server memory 2,147,483,647 max server memory の値を7168MBへ変更し、その後Total Server Memoryの値が7168MBへ達した場合、CPU負荷が100%になる可能性はありますでしょうか? よろしくお願いします。

  • SQL Server をサーバー機へ移設

    現在、20名ほどの町工場で、10台ほどのPCと、Server(Windows Server 2008 R2 Standard) をワークグループで接続しています。 Serverは、ファイルサーバとして利用しています。 SQL Server 2005 Express を、私個人のPC(Windows7 Professional)で運用していますが、これをServerへ移設しようとしました。 Server に SQL Server(SQL Server 2008 Express)をインストールし、データベースファイルをコピーし、アッタチして、Server上にデータベースが存在しています。 Server側の Managiment Studio から私個人のPCの SQL Server へは接続できますが、私のPCからServerのSQL Serverへは接続できません。 SQL Server の認証は、SQL Server Authentication を使用してきました。 これを Windows Autehntication に変更するべきでしょうか? それとも、他に簡単な方法がありますか? Windows Authentication の場合、Server 側に、Domain を設定して、User を登録するという流れで良いのでしょうか? 尚、海外の現地企業のため、Windowsは、全て英語版を使用しています。 以上、宜しくお願い致します。

  • SQL ServerにOracleのリンクサーバー

    SQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加したいです 以下の通りSQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加することは 可能でしょうか。 <サーバー1> OS:Windows Server 2003 Standard Edition DBMS:SQL Server 2000 設定内容: (1)Oracle 11g R2のクライアントをインストール (2)サーバー2のインスタンスへのリンクサーバーを設定し、テーブルを参照(更新はしない) <サーバー2> OS:Windows Server 2008 R2 Standard Edition DBMS:Oracle 11g R2 設定内容:あるインスタンスにサーバー1が参照するためのテーブルを準備 また、さらに別のクライアントPCからMS Access 2010でサーバー1のリンクサーバーに対して パススルークエリを発行したりAccessにリンクテーブルを作成することは可能でしょうか。 SQL Server向けのSQL文が使えますでしょうか。

  • SQLサーバ自体でのメモリ消費について

    サーバ起動(SQLサーバサービス起動)後に、メモリ消費を監視していましたが、起動後にアプリケーション等の起動無しでも、メモリ消費が少しずつ進みますが、サーバ設定の影響でしょうか。0.3G程度は平気で消費されてしまうようです。(sqlsvrでの消費)

  • DUAL CPUの効果について SQL6.5のDBサーバー用

     NT4.0、SQL6.5のサーバーを立ち上げたいと考えていますが 例えとして、1.3GHzくらいのシングルCPUと、500~1000MHz くらいのDUALとどちらがDB用サーバーには向いているのでし ょうか?  アクセス者は常に複数いるものとして、各々の問い合わせの 負荷は高いものとします、XEONは今の所対象外です。 (500MHz位の低速なXEONでもDUALの場合は今でも十分ならば 使用感を) 欲張りですが、IDEのRAIDの効果もご存知でしたらお願いしま す。