次の方法で共有


affinity Input-Output mask サーバー構成オプション

マルチタスクを実行するために、Microsoft Windows 2000 と Windows Server 2003 は、プロセス スレッドを異なるプロセッサ間で移動することがあります。 オペレーティング システムの観点からは効率的ですが、各プロセッサ キャッシュがデータと共に繰り返し再読み込みされるため、システムの負荷が大きい場合、このアクティビティによって Microsoft SQL Server のパフォーマンスが低下する可能性があります。 このような状況では、特定のスレッドにプロセッサを割り当てることで、プロセッサの再読み込みを回避してパフォーマンスを向上できます。このようなスレッドとプロセッサ間の関連付けを "プロセッサ関係 (processor affinity)" と言います。

SQL Server では、アフィニティ マスク (CPU アフィニティ マスクとも呼ばれます) とアフィニティ I/O マスクの 2 つのアフィニティ マスク オプションを使用して、プロセッサ アフィニティがサポートされます。 affinity mask オプションの詳細については、「affinity mask サーバー構成オプション」を参照してください。 プロセッサが 33 から 64 のサーバーに対する CPU と I/O アフィニティのサポートでは、 affinity64 mask サーバー構成オプションaffinity64 Input-Output マスク サーバー構成オプション をそれぞれ追加で使用する必要があります。

33 から 64 個までのプロセッサを搭載しているサーバーでの関係 (affinity) は、64 ビット オペレーティング システムでのみサポートされます。

affinity I/O mask オプションは、SQL Server ディスク I/O を指定された CPU のサブセットにバインドします。 ハイエンドな SQL Server オンライン トランザクション処理 (OLTP) 環境では、この拡張機能により、I/O を発行する SQL Server スレッドのパフォーマンスを向上できます。 この拡張機能は、個々のディスクまたはディスク コントローラーのハードウェア アフィニティをサポートしていません。

アフィニティ I/O マスクの値は、マルチプロセッサ コンピューターで SQL Server ディスク I/O 操作を処理できる CPU を指定します。 このマスクはビットマップで、右端のビットによって最も順番の小さい CPU(0) が指定され、そのビットの左隣のビットによって次に順番の小さい CPU(1) が指定され、それ以降も同様に CPU が指定されます。 32 を超えるプロセッサを構成するには、 アフィニティ I/O マスクaffinity64 I/O マスクの両方を設定します。

アフィニティ I/O マスクの値は次のとおりです。

  • 1 バイトの アフィニティ I/O マスク は、マルチプロセッサ コンピューターで最大 8 個の CPU をカバーします。

  • 2 バイト のアフィニティ I/O マスク は、マルチプロセッサ コンピューターで最大 16 個の CPU をカバーします。

  • 3 バイト のアフィニティ I/O マスク は、マルチプロセッサ コンピューターで最大 24 個の CPU をカバーします。

  • 4 バイト のアフィニティ I/O マスク は、マルチプロセッサ コンピューターで最大 32 個の CPU をカバーします。

  • 32 個を超える CPU をカバーするには、最初の 32 個の CPU に対して 4 バイト のアフィニティ I/O マスク を構成し、残りの CPU には最大 4 バイトの affinity64 I/O マスク を構成します。

アフィニティ I/O パターンの 1 ビットは、対応する CPU が SQL Server ディスク I/O 操作を実行する資格があることを指定します。0 ビットでは、対応する CPU に対して SQL Server ディスク I/O 操作をスケジュールする必要がないことを指定します。 すべてのビットがゼロに設定されている場合、または アフィニティ I/O マスク が指定されていない場合、SQL Server ディスク I/O は、SQL Server スレッドを処理できるいずれかの CPU にスケジュールされます。

SQL Server アフィニティ I/O マスク オプションの設定は特殊な操作であるため、必要な場合にのみ使用する必要があります。 ほとんどの場合、Windows 2000 または Windows Server 2003 の既定のアフィニティが最適なパフォーマンスを提供します。

affinity I/O mask オプションを指定する場合は、affinity mask 構成オプションと共に使用する必要があります。 アフィニティ I/O マスク スイッチと affinity mask オプションの両方で同じ CPU を有効にしないでください。 各 CPU に対応するビットは、次の 3 つの状態のうちのいずれかに設定します。

  • affinity I/O mask オプションと affinity mask オプションの両方で 0。

  • アフィニティ I/O マスク オプションでは 1、アフィニティ マスク オプションでは 0。

  • アフィニティ I/O マスク オプションでは 0、アフィニティ マスク オプションでは 1。

affinity I/O mask オプションは高度なオプションです。 sp_configure システム ストアド プロシージャを使用して設定を変更する場合は、show advanced オプションが 1 に設定されている場合にのみ、アフィニティ I/O マスクを変更できます。 SQL Server では、 アフィニティ I/O マスク オプションを再構成するには、SQL Server インスタンスを再起動する必要があります。

注意事項

Windows オペレーティング システムで CPU アフィニティを構成したり、SQL Server でアフィニティ マスクを構成したりしないでください。 この 2 つの設定は、同じ効果をねらったものであり、これらの構成間に一貫性がない場合は、予期しない結果を招く可能性があります。 SQL Server の CPU 関係を構成する場合は、SQL Server の sp_configure オプションを使用する方法が最適です。

こちらもご覧ください

リソースの利用状況の監視 (システム モニター)
RECONFIGURE (Transact-SQL)
サーバー構成オプション (SQL Server)
sp_configure (Transact-SQL)