メモリ構成
次のセクションでは、データベースのパフォーマンスを最適化するために必要なSQL Serverのメモリ設定について説明します。
最大サーバメモリ
max server memoryオプションは、SQL Serverインスタンスで使用できるメモリの最大容量を設定します。通常、SQL Serverが実行されている同じサーバで複数のアプリケーションが実行されていて、これらのアプリケーションが正常に機能するのに十分なメモリを確保したい場合に使用されます。
アプリケーションによっては、起動時に使用可能なメモリのみを使用し、メモリに負荷がかかっていても追加のメモリを要求しないものもあります。ここで、最大サーバメモリ設定が有効になります。
複数のSQL Serverインスタンスを持つSQL Serverクラスタでは、各インスタンスがリソースを競合する可能性があります。SQL Serverインスタンスごとにメモリ制限を設定すると、各インスタンスのパフォーマンスを最大限に高めることができます。
* NetAppでは、パフォーマンスの問題を回避するために、オペレーティングシステム用に少なくとも4GBから6GBのRAMを残しておくことを推奨しています。 |
SQL Server Management Studioを使用したサーバの最小メモリと最大メモリの調整
SQL Server Management Studioを使用してサーバの最小メモリまたは最大メモリを調整するには、SQL Serverサービスを再起動する必要があります。次のコードを使用して、Transact SQL(T-SQL)を使用してサーバメモリを調整することもできます。
EXECUTE sp_configure 'show advanced options', 1 GO EXECUTE sp_configure 'min server memory (MB)', 2048 GO EXEC sp_configure 'max server memory (MB)', 120832 GO RECONFIGURE WITH OVERRIDE
不均一なメモリアクセス
NUMA(Nonuniform Memory Access)は、プロセッサバスの余分な負荷を回避するためのメモリアクセス最適化テクノロジです。
SQL ServerがインストールされているサーバでNUMAが構成されている場合、SQL ServerはNUMAを認識し、NUMAハードウェアで優れたパフォーマンスを発揮するため、追加の構成は必要ありません。
インデックス作成メモリ
index create memoryオプションは、通常はデフォルトから変更する必要がないもう1つの詳細オプションです。
インデックスを作成するために最初に割り当てられるRAMの最大容量を制御します。このオプションのデフォルト値は0です。これは、SQL Serverによって自動的に管理されることを意味します。ただし、インデックスの作成に問題がある場合は、このオプションの値を増やすことを検討してください。
クエリあたりの最小メモリ
クエリを実行すると、SQL Serverは効率的に実行するために最適なメモリ容量を割り当てようとします。
デフォルトでは、クエリごとの最小メモリ設定では、実行するクエリごとに>=が1024KBに割り当てられます。SQL Serverがインデックス作成処理に割り当てられるメモリ容量を動的に管理できるようにするには、この設定をデフォルト値のままにしておくことを推奨します。ただし、SQL ServerのRAM容量が効率的に実行するために必要な容量を超えている場合は、この設定を大きくすると、一部のクエリのパフォーマンスが向上することがあります。したがって、SQL Server、その他のアプリケーション、またはオペレーティングシステムで使用されていないサーバ上のメモリが使用可能であれば、この設定を大きくすることでSQL Serverの全体的なパフォーマンスを向上させることができます。空きメモリがない場合、この設定を増やすと、全体的なパフォーマンスが低下する可能性があります。