SQL Serverのメモリの設定は規定で以下のように設定されています。
これらのメモリ使用量を設定する場合、図9に示した[SQL Server のプロパティ]ダイアログ ボックスの[メモリ]タブを使用することができます。[メモリ]タブを使用すれば、メモリ使用量を手作業で動的に設定できます。通常、サーバをSQL Server専用で稼働させる場合は、これらの設定を変更する必要はありませんが、1台のサーバに複数のSQL Serverインスタンスを稼働させる場合やIISやそのほかのOSサービスも同時に稼働させるような混合サーバ構成の場合、メモリの設定を調整することができます。この設定をEnterprise Managerで行う場合、[メモリ]タブの[SQL Server メモリの動的設定]オプションを選択し、必要に応じて、[最小]と[最大]のスライダで、メモリ使用量の最小値と最大値を設定します。また、sp_configure ストアド プロシージャを使用して最小値と最大値の設定を変更することもできます。その場合は、次のTransact-SQLコマンドを使用します。
exec sp_configure 'min server memory', <Mbytes数> exec sp_configure 'max server memory', <Mbytes数>
SQL Serverインスタンスを複数稼働させているような場合、例えば1台のサーバで昼間は業務用のインスタンスに多くのユーザーが接続し、夜間は分析用のSQL Serverインスタンスで、データロードからOLAPストアの再構築のために多くの負荷がかけられるような場合、SQL Server エージェントのジョブに以下のようなクエリを登録し、スケジュール設定することで、昼間と夜間のSQL Serverインスタンスへのメモリ割り当てをSQL Serverインスタンスの再起動なしに変更できます。
sp_configure 'show advanced options', 1 GO RECONFIGURE GO exec sp_configure 'max server memory', <Mbytes数> GO RECONFIGURE WITH OVERRIDE GO
注)システム ストアド プロシージャを使用してmin memory per queryの設定を変更するには、show advanced optionsを「1」に設定する必要があります。sp_configureを使用して設定を変更し、変更結果を直ちに有効にするには、RECONFIGURE WITH OVERRIDE ステートメントを使用します。このステートメントを実行しない場合、変更はSQL Serverを再起動した後で有効になります。
SQL Serverに対して特定のメモリを予約することも可能です。SQL Serverに対して物理メモリを予約した場合、SQL Serverがアイドル状態のときにSQL Serverメモリを別のプロセスに割り当てることが可能な場合でも、オペレーティング システムはそのページをスワップ アウトしません。専用システムの場合は、メモリを予約することでページングとキャッシュヒットが削減され、それによってSQL Serverパフォーマンスが向上する場合があります。SQL Serverに対して物理メモリを予約するには、[SQL Server のプロパティ]ダイアログ ボックスの[メモリ]タブを選択し、[SQL Server の物理メモリの予約]を選択します。
また、ストアド プロシージャ sp_configureを使用して物理メモリを予約することもできます。その場合は、次のTransact-SQLコマンドを使用します。
exec sp_configure 'set working set size', 1
次回は、SQL Serverのディスクの自動チューニング機能を解説します。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.