[SQL]SQL Server の適切な設定

文書翻訳 文書翻訳
文書番号: 166967 - 対象製品
この記事は、以前は次の ID で公開されていました: JP166967
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

概要

SQL Server は、比較的少ない設定の調整で、非常に高いパフォーマンスを提供することができます。たとえば、Microsoft の IS 部門には、4,000 人を超える同時ユーザーをサポートする SQL Server があります。メモリ、ロック、ユーザー接続などの明白な設定の他は、これは、ほとんどデフォルトの設定を使用しています。それでも、業界標準である 4 プロセッサ コンピュータ上で動作して、非常に高いパフォーマンスを作り出しています。この高レベルのパフォーマンスは、大規模な設定の調整によるものではなく、アプリケーションとデータベースの設計が優れていることから得られたものです。

SQL Server のパフォーマンスの最適化についての詳細は、米国 Microsoft Corporation から提供されている、以下の Knowledge Base をご覧ください。
ARTICLE ID : 110352
TITLE : Optimizing Microsoft SQL Server Performance
パフォーマンスの問題を取り扱う際、設定の調整から得られる改善の程度は、システムの設定が既に不適切になっていない限り、通常はささやかなものです。

これが適切に設定されていない場合、一部の設定により、サーバーが不安定になったり、不規則な動作をしたりすることがあります。メモリ、ロック、ユーザー接続などの明白な調整を除き、その他の設定、特に詳細の設定は、よく考えてから調整してください。新しい設定が Microsoft テクニカル サポートの推奨と矛盾する場合は、雑誌記事、ホワイト ペーパー、コンサルタントの推奨する値に、何も考えずに調整することは、しないでください。

詳細

数年間、何百にも及ぶサイトのサポート経験から、設定が不適切な場合の結果は、よくも悪くもないか、非常にマイナスなものになる可能性もあることが分かっています。特に、下に示す設定は、この変更が及ぼす影響をはっきりと理解している場合を除き、デフォルトから変更しないでください。これらがデフォルトから変更されていて、問題が起こる場合は、Microsoft テクニカル サポートの助言を受けて、問題を分析中に、デフォルト設定を復元することができます。
set working set size
smp concurrency
priority boost
max worker threads
procedure cache
tempdb in RAM, free buffers, max async I/O, read ahead parameters など、その他の設定も、影響を十分に理解せずに、また、利点を確認するための客観的なパフォーマンステストなしには、気軽に変更してはいけません。

この資料の残りの部分では、これらのパラメータそれぞれに関して論じ、それらを使用する場合に考慮すべき点をいくつか取り上げます。

"set working set size":

この設定のデフォルトは 0 で、これにより、Windows NT Server の仮想メモリ マネージャが、SQL Server のワーキング セット サイズを決定することができます。ほとんどの条件下では、これが正しい設定です。SQL Server がインストールされると、セットアップ プログラムは、ネットワーク コントロール パネルのサーバー サービス プロパティで、自動的に、"ネットワーク アプリケーションのスループットを最大にする" を選択します。これは、Windows NT Server の仮想メモリ マネージャに、ワーキング セット取り込みをごくわずかにするように指示し、それによって、SQL Server のワーキング セットの妨害を最小限にします。この理由で、"set working set size" のデフォルトの上書きは、通常、必要ありません。ところが、これを 1 に設定すると、起動時に、SQL Server は Win32 API SetProcessWorkingSetSize() を使用して、より厳密にワーキング セットを修正しようとします。その後、SQL Server のメモリを過剰にコミットすると、オペレーティング システムの補正能力が低下し、メモリ関連のオペレーティング システム エラーがより多く見られるようになる場合があります。

詳細については、以下の記事をご覧ください。
ARTICLE ID: 401935
TITLE: [SQL] SQL Server for NT の推奨メモリ構成


"smp concurrency":

この設定のデフォルトは 0 で、これにより、SQL Server は (起動時に) 自動的にプロセッサの数を検出し、これらの n-1 を使用することができます。SMP コンピュータ上では、これにより、SQL Server の処理優先度も 15 に引き上げられます。ほとんどの場合、デフォルトの設定を使用するべきです。この設定を -1 に上書きすると、SQL Server が使用可能なプロセッサの数の制限がなくなり、ある状況下で、CPU の処理能力不足になるかもしれません。典型的な症状には、ネットワーク エラーや、応答を停止したコンソールなどがあります。NET VIEW コマンドは、"network session was canceled" のエラーで失敗する場合があります。コンピュータ上で実行されている他のプロセスは、CPU の処理能力不足が原因で応答を停止する場合があります。これには、SQL Executive、バックアップ プログラム、バッチ ジョブなど、他のサービスが含まれることがあります。

Compaq Proliant サーバー上では、Automatic Server Recovery (ASR) 監視ドライバが、CPU の処理能力不足の状態になり、Windows NT Server オペレーティング システムが失敗したと考え、回復のためにサーバーを再起動する場合があります。

デフォルトの "smp concurrency" 設定である 0 では、プロセッサは「無駄使い」されません。これは、SQL Server が、すべてのネットワーク、I/O、メモリ管理機能のために、オペレーティング システムを呼び出すからです。オペレーティング システムは、これらの頻繁な呼び出しをサービスしているとき、CPU リソースを使用し、オペレーティング システムが、必要な CPU 時間を取得し、SQL Server の要求をすばやくサービスすることが、デフォルト設定により確実になります。よって、デフォルトの "smp concurrency" 設定である 0 が使用されていると、ビジーな SQL Server システム上のすべてのプロセッサが使用される傾向があるのです。"smp concurrency" を 1、2 などに設定することも、必要ではないはずです。

これにより、-1 という "smp concurrency" の設定をいつ使用するべきなのか、また、なぜこの設定が提供されているのか、という疑問が生じる場合があります。アドホックまたは意思決定支援クエリーが使用できない、トランザクション パスの長さが厳密に制御されている純粋なオンライン トランザクション処理 (OLTP) のロード、および、コンピュータが完全に SQL Server 専用になっている環境 (コンソールも、ファイル共有、SQL Executive なども使用されていない) 下では、この設定により、最小限の副作用で、パフォーマンスをある程度向上させることができます。

ところが、サーバーに送り込みをしているクエリー ストリームの性質が、上記の純粋な状態から変化する場合、エラー動作が観察されることがあります。たとえば、ある期間正常に動作していると思われるシステムが、突然応答を停止するなどです。オペレーティング システムの問題のように見える場合があるため、デバッグは複雑になることがあります。

詳細については、以下の記事をご覧ください。
ARTICLE ID : 111405
TITLE : [SQL] SQL Server and Windows NT Thread Scheduling


"priority boost":

この設定のデフォルトは 0 で、これにより、SQL Server は、単一プロセッサ コンピュータ上では処理優先度 7 で、(通常は) SMP コンピュータ上では処理優先度 15 で実行されます。ほとんどの状況では、デフォルト設定を使用してください。これを 1 に設定すると、SQL Server の処理優先度が、単一プロセッサ コンピュータ上で 15、SMP コンピュータ上で 24 に引き上げられます。これは、"smp concurrency" を -1 に設定した場合と同様の効果をもたらす場合があります。

"max worker threads":

この設定のデフォルトは 255 で、これにより、255 までの作業スレッドを作成することができます。ほとんどの場合は、デフォルト設定の 255 を使用してください。これは、ユーザー接続が 255 しか確立できないということではありません。1 つのシステムが、255 の作業スレッドまで本質的に多重化され、何千ものユーザー接続を持つことが可能で、各ユーザーは、通常、遅延に気づきません。そのような場合、「同時に」実行できるクエリーは 255 だけですが、これが次に、作業スレッドがいくつ設定されているとしても、同時性が認識されるだけになるように、使用可能な CPU の数まで、さらに多重化されます。

新規のユーザー接続が確立される度に、新規の作業スレッドが、作業スレッドの上限まで、作成されます。一定の時間動作がないと、作業スレッドは、自動的にタイム アウトして、クローズします。これは、各スレッドがリソースを消費するため、オーバーヘッドを低く保つことが目的です。多数の作業スレッドを設定すると、スケジューリングとリソースのオーバーヘッドにより、通常、逆効果になり、パフォーマンスが遅くなります。

"procedure cache":

SQL Server 6.5 では、この設定はデフォルトで 30 になり、これは、SQL Server のキャッシュ スペースの 30 パーセントが、プロシージャ キャッシュのために保存されるということを示します。大容量のメモリ (たとえば 256 MB 以上) を持つシステム上では、これは、バッファ キャッシュがもっとメモリを使用できるように、いくらか減らされる可能性があります。しかし、システムがストアド プロシージャをほとんど使用しないとしても、この設定を、むやみに、非常に小さい数値 (5 パーセントなど) に減らすことはやめてください。これは、プロシージャ キャッシュが、ストアド プロシージャのキャッシュだけでなく、いろいろな内部サーバー アロケーション機能に使用される、汎用メモリ プールだからです。このプールに十分な容量のメモリがないと、エラーが出るか、その他のエラー動作が観察される場合があります。SQL Server 6.5 では、パフォーマンス モニターで、プロシージャ キャッシュの使用を監視し、プロシージャ キャッシュの設定を減少させるかどうかの判断を行うことができます。

多くの状況で、プロシージャ キャッシュの設定を減少させたことによって開放されたバッファ キャッシュの増加量は、バッファ キャッシュ ヒット率に、目に見える影響は及ぼしません。これは、通常、キャッシュ サイズの細かい変更 (パーセンテージに関して)全体に渡って、比較的均等になります。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 166967 (最終更新日 1998-01-09) をもとに作成したものです。

プロパティ

文書番号: 166967 - 最終更新日: 2014年2月5日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
キーワード:?
kbnosurvey kbarchive kbinfo KB166967
"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