メインコンテンツまでスキップ

SQL Server のチューニング

TimeTracker はデータを専用のDBに保持しており、DBにアクセスするためのツールとして、
Microsoft社製の SQL Server を使っています。
このSQL Serverをうまく使うためのチューニングや運用をご紹介します。

  1. 使用するメモリの上限を設定する
    2. 定期的にメモリを解放する

1.使用するメモリの上限を設定する​

SQL Server はDBにアクセスするデータを一時的にRAMに展開するため、サーバーPCのメモリを使用します。
デフォルトの設定だと使用するメモリの上限が決まっていないため、上限を設定しないと際限なく使います。
その結果、メモリは十分確保している筈なのにPCの動作が思い、、、ということがあります。

割り当ての目安​

対象のPCに TimeTracker 以外のサービスが稼働していない場合、
以下の割り当てを除いたサイズを SQL Server の上限に設定するとよいでしょう。

  • OS(+IIS):1GB
  • Redis   :1GB

例)メモリが16GBの場合、16-1-1=14GB をSQL Server に割り当てます。

手順​

  1. SOL Server Management Studioにログインする。

  2. 左側のツリーの最上位を右クリックし、「プロパティ」を選択する。

    SQL Server のチューニングの画像 1
  3. 表示されるウィンドウの左にある「ページの選択」から「メモリ」を選択する。

  4. 「サーバーメモリオプション」の「最大サーバーメモリ(MB)」を入力し「OK」をクリックする。

SQL Server のチューニングの画像 2

注意点​

SQL Server が使えるメモリが少ない(または、TimeTracker を動作させるために必要なメモリに足りていない)場合、
TimeTrackerの動作が遅くなるかもしれません。

例)リソースモニタでメモリの使用量を見ても余裕はあるけど、SQL Server の上限に達している、、、という場合です。
この場合は以下の対応を検討してください。

① SQL Server のメモリ上限を増やす。

② 下記2を実施する。

③ それでも変わらない場合はPCのメモリを増設する。
なお、製品サイトで300ラインセンス運用時の最低スペックとして8GBのメモリが必要とご紹介しておりますが、
使い方(アイテム数、利用頻度、更新アイテム数など)によりメモリが必要になります。

2.定期的にメモリを解放する​

上記で上限を決めたとしても、常に上限いっぱいのメモリを使っているわけではありません。
処理するデータ量に応じてメモリを確保しますが、困ったことに処理が終わってもメモリを開放しません。
その結果、使わないメモリがあるのに他の機能でメモリを使えずにサーバーの処理が遅くなる。。ということがあります。
SQL Server のサービスを再起動することで使っていないメモリを開放します。

そのため、定期的(1ヶ月に1回、四半期に一回など)に SQL Server のサービスを再起動することで、
SQL Serverがメモリを専有することを回避できます。
手順は以下です。

  1. TimeTracker を停止する。 ← メンテナンスモードにしてIISの停止するまででOKです。

  2. SQL Server のサービスを停止し、再起動する。
    下図のようにサービスから選択肢、停止→開始 してください。

    SQL Server のチューニングの画像 3
  3. TimeTracker を起動する。 ← IISで起動してください。