SQL Server の適切な環境設定を確認する方法

文書翻訳 文書翻訳
文書番号: 319942 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では以下の環境設定およびその使用方法に関する注意事項について説明します。
  • affinity mask
  • lightweight pooling
  • max async IO
  • max worker threads
  • memory
  • priority boost
  • set working set size
SQL Server では、比較的少数の環境設定をチューニングするだけで、非常に高いレベルのパフォーマンスが得られます。優れたアプリケーションやデータベース デザインを使用すれば、広範囲な環境設定のチューニングを行わずに高いレベルのパフォーマンスが得られます。さまざまな SQL Server のパフォーマンスに関する問題を解決する方法の詳細については、この資料の「関連情報」を参照してください。

通常、システムが適切に設定されていない場合を除き、環境設定をチューニングしてパフォーマンスの問題に対処しようとしても、パフォーマンスの向上は限られます。SQL Server 7.0 以降、環境設定が自動的にチューニングされ、環境設定 (特に詳細設定) を変更する必要はほとんどありません。通常、SQL Server の環境設定の変更は、変更を避けられない理由があり、かつ入念に計画したテストを行い、環境設定を変更する必要性が確認できている場合にのみ行います。環境設定の変更後の利点を評価できるように、環境設定の変更を行う前に、ベースラインを確立する必要があります。

SQL Server が適切に設定されていないと、一部の環境設定によってサーバーの安定性が損なわれることや、SQL Server の動作が不安定になることがあります。長年にわたるさまざまな環境に対するサポートの経験により、既定以外の環境設定を使用すると、その結果が不明のものから非常に望ましくない悪影響まで、さまざまな結果がもたらされる可能性があることがわかっています。

環境設定を変更する場合、変更の前後に厳密に計画したパフォーマンスのテストを行って、改善の程度を評価する必要があります。

実際のサポート事例によると、SQL Server 7.0 以降では手動で環境設定をチューニングせずに、非常に高いレベルのパフォーマンスが得られることがわかっています。

SQL Server のバージョン 7.0 以降では、user connectionslocks、および open objectss の設定が既定で SQL Server によって動的にチューニングされるため、これらの環境設定を変更しないでください。

affinity mask

affinity mask の設定は、スレッドが特定の CPU にどの程度緊密にバインドされているかを表しています。既定では、Microsoft Windows NT および Microsoft Windows 2000 では "ソフト" アフィニティが使用されます。つまり、各スレッドは前回の実行時と同じ CPU に再スケジュールされ、前回の CPU に再スケジュールできない場合は別の CPU で実行されることがあります。

実際には、affinity mask の既定の設定を変更すると、パフォーマンスが向上することはほとんどなく、多くの場合、パフォーマンスは低下します。

affinity mask では SQL Server の実行を使用可能な CPU のサブセットに制限し、競合する他のサービスにより多くの CPU の使用機会を与えます。ほとんどの場合、SQL Server は通常の優先度で実行されるため、affinity mask の設定を変更する必要はありません。Windows NT または Windows 2000 のスレッド スケジューラにより、競合するすべてのスレッドのスレッド優先度が動的に調整されます。この調整により、競合するすべてのスレッドに、利用可能なすべての CPU に対する同等の使用機会が与えられます。

きわめて例外的な場合を除き、affinity mask は調整しないでください。affinity mask を調整する場合、変更の前後に厳密に計画したテストを行って、改善の必要性と改善の程度を確認する必要があります。

lightweight pooling

既定では、SQL Server ではアクティブな SPID またはユーザー プロセスごとに 1 つのスレッドを使用します。これらのスレッドはプールされた構成で動作し、スレッドの数を管理できるようにしています。詳細設定オプションの "lightweight pooling" では Windows NT "ファイバー" サポートを使用して、基本的に単一スレッドで複数の実行コンテキストを処理します (このオプションは、"ファイバー モード" と呼ばれることもあります)。

実際の運用によると、きわめて例外的な場合を除き、ファイバー モードを使用する必要はありません。以下のすべての条件が満たされた場合、可能性として、lightweight pooling が有効な場合があります。しかし、厳密に管理したテストを必ず実施して、ファイバー モードが実際に有効かどうかを慎重に判断してください。
  • 大容量のマルチプロセッサ サーバーを使用している場合
  • すべてのサーバーが最大容量に達しているか、または最大に近い容量で動作している場合
  • 多数のコンテキスト切り替え (毎秒 20,000 回以上) が発生している場合
コンテキスト切り替えを検索するには、パフォーマンス モニターで Thread オブジェクトの Context switches/sec カウンターを選択し、すべての SQL Server インスタンスを監視します。 ファイバー モードでサーバーを実行する場合、SQL Server 2000 または SQL Server 2005 の SQL Mail はサポートされません。SQL Mail は、64 ビット版の SQL Server 2000 ではサポートされません。詳細については、SQL Server 2000 (64 ビット版) Books Online の「64 ビット リリースの 32 ビット リリースとの相違点 (64 ビット)」を参照してください。 関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
308604 [PRB] ファイバー モードでサーバーを実行すると SQLMail がサポートされない
303120 [FIX] lightweight pooling 使用時の ConnectionWrite エラー

Max Async IO

SQL Server 7.0 の場合: SQL Server 7.0 では、max async IO の環境設定を使用できます。高速 RAID システムとその利点を評価する方法がある場合には、この環境設定の変更が適切な場合があります。結果を評価するベースラインがない場合は、この設定を変更しないでください。ディスクの利用状況を監視して、ディスクのキューイングを発生させている問題を特定します。関連情報については、SQL Server Books Online の以下のトピックを参照してください。
  • max async IO オプション
  • ディスク利用状況の監視
  • パフォーマンス監視の例:ボトルネックの特定
SQL Server 2000 以降の場合: SQL Server 2000 以降では、max async IO の環境設定を変更できません。SQL Server 2000 以降では、この環境設定は自動的にチューニングされます。

max worker threads

既定では、max worker threads の設定は 2000 です。この設定により最大 255 のワーカー スレッドの作成が許可されます。ほとんどの場合に既定の設定 255 を使用します。これは、確立できるユーザー接続が 255 のみという意味ではありません。システムでは何千ものユーザー接続を保持することが可能です (これらのユーザーは、基本的に 255 のワーカー スレッドに多重化されます)。同時に実行できるクエリは 255 個のみですが、使用可能な CPU の数に合わせて多重化されるため、ユーザーは構成されているワーカー スレッドの数とは関係なく、同時に発生している状態のみを認識します。そのため、一般にユーザーが遅延を感じることはありません。

注: 既定では、SQL Server 2005 および SQL Server 2008 の max worker threads 設定は 0 です。

ワーカー スレッドの数を既定の設定よりも大きな値に設定すると、ほとんどの場合、スケジュールとリソースのオーバーヘッドにより、生産性が低下し、パフォーマンスが低下します。きわめて例外的な場合、および厳密に計画したテストにより、この設定値の増加が有効であることが確認できた場合にのみ、この設定値を増やします。

memory


メモリ設定の詳細については、SQL Server Books Online のトピック「メモリ設定オプションを使用したサーバー パフォーマンスの最適化」を参照してください。

クラスター化された SQL Server のメモリ設定の詳細については、SQL Server Books Online (SQL Server 2000 のみ) のトピック「フェールオーバー クラスタの作成」の「使用上の注意」を参照してください。

関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
274750 SQL Server で 2 GB を超えるメモリを構成する方法
224818 SQL Server 7.0 と Exchange 5.5 Service Pack 2 の両方が BackOffice Small Business Server 4.5 にインストールされている場合、簡単なメモリ チューニングを行う必要がある
316749 [PRB] 多数のデータベースを含むシステムで仮想メモリが不足することがある

priority boost

既定では、priority boost の設定は 0 です。この設定により、SQL Server を単一プロセッサ コンピューターで実行する場合でも、SMP (対称型マルチプロセッサ) コンピューターで実行する場合でも、SQL Server は通常の優先度で実行されます。priority boost を 1 に設定すると、SQL Server プロセスは高い優先度で実行されます。この設定により、SQL Server プロセスがオペレーティング システムの最高の優先度で処理されることはありません。

実際のサポート事例によると、パフォーマンスを向上させるために priority boost を使用する必要はありません。priority boost を使用すると、一部の状況においてはサーバーの正常な動作を妨げることがあります。そのため、きわめて例外的な場合を除き、priority boost を使用しないでください。例外的な状況としては、Microsoft Product Support Services が、パフォーマンスの問題を調査する際に priority boost を使用する場合が挙げられます。

重要: SQL Server 7.0 以降を実行中のクラスター化されたサーバーでは、priority boost を使用しないでください。

set working set size

set working set size の既定の設定を変更しないでください。既定の設定 0 を使用すると、Windows NT または Windows 2000 の仮想メモリ マネージャーによって SQL Server の作業セット サイズが決定されます。Windows NT または Windows 2000 では SQL Server をインストールすると、セットアップ プログラムにより、ネットワーク アプリケーションのパフォーマンスが自動的に最適化されます。その結果、Windows NT または Windows 2000 の仮想メモリ マネージャーによってごくわずかな作業セットの縮小が行われますが、その縮小によって SQL Server インスタンスの作業セットが受ける影響は最小限です。

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

set working set size を変更すると、SQL Server のエラー メッセージ 844 または 845 を発生させる原因にもなります。エラー メッセージ 844 または 845 の一般的な原因に関する詳細については、この資料の「関連情報」を参照してください。

関連情報

関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
310834 [PRB] エラー メッセージ 844 または 845 (バッファー ラッチ タイムアウト エラー) の一般的な原因
298475 アプリケーションのパフォーマンスに関する問題のトラブルシューティングを行う方法
243589 SQL Server 7.0 以降で実行に時間のかかるクエリのトラブルシューティング
243588 アドホック クエリのパフォーマンスのトラブルシューティングを行う方法
224587 SQL Server のアプリケーション パフォーマンスのトラブルシューティングを行う方法
166967 適切な SQL Server 6.5 構成の設定
254321 クラスター化された SQL Server に関する推奨事項と注意事項および基本的な警告
297864 SQL Server 6.5 からのアップグレードに関するパフォーマンス上の注意事項

プロパティ

文書番号: 319942 - 最終更新日: 2011年9月17日 - リビジョン: 3.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
キーワード:?
kbsqlmanagementtools kbhowtomaster KB319942
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com