メモリ構成オプションを使用したサーバー パフォーマンスの最適化

Microsoft SQL Server のメモリ マネージャー コンポーネントを使用すると、SQL Server で使用できるメモリを手動で管理する必要がなくなります。SQL Server が起動すると、オペレーティング システムと他のアプリケーションが現在使用しているメモリ量に基づき、メモリ マネージャーは割り当てるメモリ量を動的に決定します。コンピューターと SQL Server の負荷が変化すると、割り当てられるメモリも変化します。詳細については、「メモリ アーキテクチャ」を参照してください。

メモリの使用方法を設定し、サーバーのパフォーマンスに影響を与えるには、以下のサーバー構成オプションを使用できます。

  • min server memory

  • max server memory

  • max worker threads

  • index create memory

  • min memory per query

min server memory サーバー構成オプションでは、設定済みの最小サーバー メモリに達した場合に、そのしきい値を下回るメモリが SQL Server によって解放されないようにすることができます。この構成オプションは、使用している SQL Server のサイズと動作に合わせて特定の値に設定できます。この値は、SQL Server のパフォーマンスに影響を与えるほど大量のメモリが SQL Server に要求されないように適切な値に設定する必要があります。

maxservermemory サーバー構成オプションでは、SQL Server の起動時と実行中に割り当てることができる最大メモリ量を指定できます。SQL Server と同時に複数のアプリケーションを実行し、これらのアプリケーションの実行に十分なメモリを確保する場合、この構成オプションを特定の値に設定できます。他のアプリケーション (Web サーバー、電子メール サーバーなど) から必要なときにのみメモリが要求される場合は、maxservermemory サーバー構成オプションを設定しないでください。SQL Server はそれらのアプリケーションに対し、必要に応じてメモリを解放します。ただし、多くのアプリケーションは、起動時に利用可能なメモリをできるだけ使用し、その後に必要な場合でも追加のメモリを要求しません。このように動作するアプリケーションが SQL Server と同時に同じコンピューターで実行されている場合、アプリケーションの要求するメモリが SQL Server に割り当てられないようにするために、maxservermemory サーバー構成オプションを適切な値に設定します。

min server memory および max server memory サーバー構成オプションに同じ値を設定しないでください。同じ値に設定すると、SQL Server に割り当てられるメモリの量が固定されます。最終的には、動的メモリ割り当ての方がパフォーマンス全体の向上につながります。詳細については、「サーバー メモリ オプション」を参照してください。

maxworkerthreads サーバー構成オプションでは、SQL Server に接続されたユーザーのサポートに使用するスレッド数を指定します。max worker threads の既定値は 0 です。この値を指定した場合は、スタートアップ時に SQL Server によってワーカー スレッドの数が自動的に構成されます。この設定はほとんどのシステムにとって最適な設定ですが、システムの構成によっては、max worker threads に特定の値を設定すると、パフォーマンスが向上する場合があります。詳細については、「max worker threads オプション」を参照してください。

注意

SQL Server 2000 の max worker threads の既定値は 255 です。SQL Server 2000 データベース エンジンのインスタンスを新しいバージョンにアップグレードしても、max worker threads の構成値は変わりません。アップグレードする場合、新しいインスタンスの max worker threads の値を 0 に変更して、データベース エンジンで最適なスレッド数を計算できるようにすることをお勧めします。

indexcreatememory サーバー構成オプションは、インデックス作成中に並べ替え操作で使用されるメモリ量を制御します。通常、稼働中のシステムではインデックス作成は頻度の少ない作業であり、多くの場合、閑散時に実行が予定されるジョブです。したがって、インデックスの作成が頻繁でなく、閑散時に行われる場合、この値を増やすとインデックス作成のパフォーマンスが向上できます。ただし、minmemoryperquery 構成オプションの値は小さい数にします。そうすれば、要求したすべてのメモリが利用できない場合でも、インデックス作成ジョブは起動します。詳細については、「index create memory オプション」を参照してください。

min memory per query サーバー構成オプションでは、クエリの実行に割り当てるメモリの最小量を指定します。システム上で同時に多数のクエリを実行する場合は、min memory per query の値を増やすことにより、対象範囲の広い並べ替え処理やハッシュ処理など、メモリ負担の大きいクエリのパフォーマンスを向上させることができます。minmemoryperquery サーバー構成オプションは、特に稼働率が高いシステムではあまり大きい値を設定しないでください。これは、要求されたメモリ最小量を確保するか、query wait サーバー構成オプションに指定された値を超えるまで、クエリは待機する必要があるためです。クエリの実行に最小限必要として指定されている量よりも多くのメモリが実際に使用できる場合、そのクエリがメモリを有効に利用できるという条件の基に、クエリで追加のメモリが利用可能になります。詳細については、「min memory per query オプション」および「query wait オプション」を参照してください。