64 個を超える CPU を搭載したコンピューター上で SQL Server を実行する場合のベスト プラクティス

ここでは、64 個を超える CPU を搭載したコンピューター上で SQL Server インスタンスを実行する場合のベスト プラクティス情報について説明します。

CPU へのハードウェア スレッドの割り当て

プロセッサを特定のスレッドにバインドする際は、affinity mask サーバー構成オプションと affinity64 mask サーバー構成オプションを使用しないでください。これらのオプションを使用できるのは、CPU が 64 個以下の場合に限られます。代わりに ALTER SERVER CONFIGURATION (Transact-SQL) を使用してください。

トランザクション ログ ファイルのサイズの管理

トランザクション ログ ファイルのサイズの拡張に関して、自動拡張に依存しないでください。トランザクション ログの拡張は、シリアルなプロセスである必要があります。ログを拡張すると、ログの拡張が完了するまでトランザクションの書き込み操作が実行されなくなる場合があります。代わりに、ログ ファイルに対して領域をあらかじめ割り当てるには、環境における一般的なワークロードを十分にサポートできる大きさの値にファイル サイズを設定します。

インデックス操作に必要な並列処理の最大限度の設定

多数の CPU を搭載したコンピューター上では、データベースの復旧モデルを一時的に一括ログ復旧モデルまたは単純復旧モデルに設定することによって、インデックスの作成や再構築などのインデックス操作のパフォーマンスを向上させることができます。このようなインデックス操作によって多数のログ アクティビティが発生し、ログの競合が SQL Server によって選ばれた最適な並列処理の次数 (DOP) に影響を及ぼす場合があります。

さらに、これらの操作では、max degree of parallelism (MAXDOP) の設定の調整を検討してください。次のガイドラインは、内部テストに基づいた、一般的な推奨事項です。さまざまな MAXDOP 設定を試し、環境に適した設定を決定する必要があります。

  • 完全復旧モデルの場合、max degree of parallelism オプションの値は 8 以下に制限されます。

  • 一括ログ復旧モデルまたは単純復旧モデルの場合、max degree of parallelism オプションの値を 8 より大きくすることを検討してください。

  • NUMA が構成されているサーバーの場合、各 NUMA ノードに割り当てられている CPU の数を超える値を maximum degree of parallelism に設定しないでください。これは、クエリが 1 つの NUMA ノードのローカル メモリを使用する可能性が高くなるためです。これにより、メモリへのアクセス時間が短縮されます。

  • ハイパー スレッディングが有効で、2009 年以前に製造されたサーバーの場合、物理的なプロセッサ数を超える値を MAXDOP に設定しないでください。

max degree of parallelism オプションの詳細については、「並列処理の次数」を参照してください。

ワーカー スレッドの最大数の設定

ワーカー スレッドの最大数には、並列処理の最大限度の設定を超える値を必ず設定してください。ワーカー スレッドの数は、サーバーに搭載されている CPU 数の 7 倍以上の数に設定する必要があります。詳細については、「max worker threads オプション」を参照してください。

SQL トレースおよび SQL Server Profiler の使用

SQL トレースおよび SQL Server Profiler は運用環境で使用しないことをお勧めします。CPU 数が増えるに応じて、これらのツールの実行に伴うオーバーヘッドも大きくなります。SQL トレースを運用環境で使用する必要がある場合は、トレース イベントの数を最小限にしてください。負荷がある状態で各トレース イベントを慎重にプロファイリングおよびテストし、パフォーマンスに大きな影響を与えるイベントの組み合わせを使用しないように注意してください。

tempdb データ ファイル数の設定

通常は、tempdb データ ファイルの数を CPU の数と一致させる必要があります。ただし、tempdb の同時実行の必要性を慎重に検討したうえで、データベース管理を減らすことができます。たとえば、64 個の CPU が搭載されているシステムにおいて通常 tempdb を使用するクエリの数が 32 個に限られている場合、tempdb ファイルの数を 64 に増やしてもパフォーマンスは改善されません。詳細については、「tempdb のパフォーマンスの最適化」を参照してください。

64 個を超える CPU を使用できる SQL Server コンポーネント

次の表に、SQL Server の各コンポーネントで 64 個を超える CPU を使用できるかどうかを示します。

プロセス名

実行可能なプログラム

64 個を超える CPU の使用

SQL Server データベース エンジン

Sqlserver.exe

可能

Reporting Services

Rs.exe

不可能

Analysis Services

As.exe

不可能

Integration Services

Is.exe

不可能

Service Broker

Sb.exe

不可能

フルテキスト検索

Fts.exe

不可能

SQL Server エージェント

Sqlagent.exe

不可能

SQL Server Management Studio

Ssms.exe

不可能

SQL Server セットアップ

Setup.exe

不可能