トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
エラーでおぼえる!? SQL Server 2000 管理運用術
文=鈴木智行(NEC Eラーニング事業部)
第6回
メモリサイズは調整できないの?
SQL Serverは「Ease of Use」のコンセプトのもと、初心者にとって非常に手軽で敷居の低いデータベースです。データベースに関する高度なスキルを持たなくても扱えるので、それで十分といったケースも多く見受けられます。しかし「簡単に扱える」ことが逆にデータベースの熟練者にとっては「少し物足りない」のかもしれません。今回はデータベースの熟練者にとって気になるメモリ設定の話を中心にご紹介します。

目次
環境設定オプション
メモリプール
メモリプールに関連する環境設定パラメータ
〜最後に〜

環境設定オプション


システムを運用していく上で、パフォーマンスが低下している原因はたくさんあります。もし、その根本の原因がハードウェアやデータベース設計やデータベースアプリケーションなどといったSQL Server以外の要因ではなく、SQL Server自体にあったとしたらどうすればよいでしょうか?「SQL ServerはおまかせDBMSなので何もできない」というわけではありません。Oracleの初期化パラメータのように、データベース管理者が手動でさまざまな設定を行うことは可能です。その設定パラメータのことを環境設定オプションといい、SQL Server 2000 SP3aでは37個存在します。

SQL Server Enterprise Managerでもその一部は設定可能です。[サーバー]を右クリックしたメニューから[プロパティ]を選択した各タブ中で行います。

もしすべての環境設定オプションにアクセスしたい場合は、sp_configureシステムストアドプロシージャを使用しなければいけません。



メモリプール


SQL Serverが利用できるアドレス空間はさまざまなコンポーネントから構成されますが、環境設定オプションがアドレス空間の中で唯一調整できるのが、メモリプールです。メモリプールには下記の表に示されるオブジェクトがあります。

種類 説明
システムデータ構造 インスタンスで扱うグローバルなデータを保持する
プロシージャキャッシュ 実行プラン(クエリプランと実行コンテキスト)を格納するためのオブジェクト
バッファキャッシュ 検索や更新対象のデータページを保持するためのオブジェクト
ログキャッシュ 更新対象のログを保持するためのオブジェクト
接続コンテキスト 現在の接続情報を保持するオブジェクト

OracleではDB_BLOCK_BUFFERS、LOG_BUFFER、SHARED_POOL_SIZE、SORT_AREA_SIZE,SORT_AREA_RETAINED_SIZEなどの初期化パラメータを使用して固定サイズを割り当てますが、SQL Serverは個々のオブジェクトのメモリ割り当てサイズを自己調整します。個々のオブジェクトのメモリ割り当てサイズを調整する環境設定オプションは存在しません。すなわちメモリプールに対して私たちが環境設定オプションで調整可能なことは、メモリプール全体のサイズを調整することだけなのです。



メモリプールに関連する環境設定パラメータ


SQL Serverでメモリプールに関連する環境設定パラメータは以下の4つがあります。

●min server memory/max server memoryオプション

min server memoryでメモリプールの最小値、max server memoryでメモリプールの最大値を設定します。SQL Serverはこの最小値と最大値の間でメモリサイズを自動調節します。もしmin server memoryとmax server memoryを同じ値にすると、固定メモリサイズになります。

SQL Server Enterprise Managerでは[サーバー]プロパティの[メモリ]タブにある[SQL Serverメモリの動的設定]で最小値(min server memory)および最大値(max server memory)を(画面1-A)、[固定メモリサイズを使用]で固定値(min server memoryとmax server memoryが同じ値)を設定します(画面1-B)。

●set working set sizeオプション

set working set sizeオプションを1にするとサーバーのメモリ設定値と同じサイズの物理メモリ領域がSQL Server用に予約されます。すなわち、他のアプリケーションがメモリを使用したくても、SQL ServerのメモリページはOSによってスワップアウトされません。しかし、マイクロソフト サポート技術情報の文書 319942「SQL Server の適切な環境設定を確認する方法」では、次のように記載されています。

「set working set size のデフォルトの設定を変更しないでください。 ……中略…… set working set size の設定を変更しても、一般的にパフォーマンスは向上しません。実際のサポート事例によると、この設定を変更した場合、通常は悪影響の方が大きいことがわかっています。」

したがって、もし設定を変更した場合は必ずパフォーマンス向上効果を確認してください。

SQL Server Enterprise Managerでは[サーバー]プロパティの[メモリ]タブにある[SQL Serverの物理メモリの予約]にチェックして設定します(画面1-C)。

●min memory per queryオプション

min memory per queryオプションはクエリが実行する際に必要なメモリの最小値を設定します。したがって、大量のデータに対してハッシュや並び替え操作を伴うようなメモリを多量に必要とするクエリに対しては、適切なサイズを設定しておけばパフォーマンスが向上する可能性があります。

SQL Server Enterprise Managerでは[サーバー]プロパティの[メモリ]タブにある[最小クエリメモリ]にKB単位で設定します(画面1-D)。

■ 画面1 メモリプールに関連する環境設定パラメータ
(図)メモリプールに関連する環境設定パラメータ



〜最後に〜


環境設定オプションの多くはSQL Serverがシステムのニーズに合わせ自動チューニングするため、ほとんど手を加える必要がありません。しかし、データベースが思うようなパフォーマンスを発揮しない場合は上記のように手動設定することも可能です。ただし、手動での調整が必ずしも劇的なパフォーマンスの向上をもたらすとは限りません。SQL Server以外の要因がボトルネックになっている場合も多いでしょう。

「パフォーマンスが悪いからSQL Serverの環境設定オプションの調整が必要だ」というように短絡的に結びつけるのではなく、もっと広い視野からパフォーマンスチューニングを心がけてください。




・ 第1回 リモートからSQL Server 2000にアクセスできない?
・ 第2回 ディスクの空き領域がなくなる?
・ 第3回 権限があるのにアクセスできない?
・ 第4回 ジョブが失敗する?
・ 第5回 ログは自動でアーカイブされないの?
・ 第6回 メモリサイズは調整できないの?


著者プロフィール
鈴木 智行(SUZUKI, Tomoyuki)
NEC Eラーニング事業部
http://www.sw.nec.co.jp/el/

入社以来、インストラクタとして教育業務に従事。SQL Serverには、4.21aから携わる。最近はデータベースグループの一員として、より大きな見地からデータベースを担当。

← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.