導入#
SQL Server はデフォルトで、マシン内の利用可能なすべてのリソースを使用します。また、他のシステムプロセスを停止させる可能性もあります。
決議 #
SQL ServerのSSMS内で、クエリを実行してCPUアフィニティが既に制限されているかどうかを確認してください:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'affinity mask';
結果が config_value = 0 を示す場合、マシン内の利用可能なすべての CPU が使用されることを意味します

これを制限するには、以下の表を参照してください:
| CPUの数 | CPUコア | アフィニティマスク値 |
| 1 | CPU 1 | 1 |
| 1 | CPU 2 | 2 |
| 1 | CPU 3 | 4 |
| 1 | CPU 4 | 8 |
| 2 | CPU 1, 2 | 3 |
| 2 | CPU 1, 3 | 5 |
| 2 | CPU 1, 4 | 9 |
| 2 | CPU 2, 3 | 6 |
| 2 | CPU 2, 4 | 10 |
| 2 | CPU 3, 4 | 12 |
| 3 | CPU 1, 2, 3 | 7 |
| 3 | CPU 1, 2, 4 | 11 |
| 3 | CPU 1, 3, 4 | 13 |
| 3 | CPU 2, 3, 4 | 14 |
| 4 | CPU 1, 2, 3, 4 | 15 |
注記:
「CPU」は複数の論理プロセッサを持つことができます。したがって、一部のCPUは4つの「CPUコア」と8つの「論理プロセッサ」を備えています。この場合、「CPUの数」はマシンの論理プロセッサの総数と直接的に対応します。

最初の2つのCPU(CPU 1、2)のみを使用したい場合は、以下のクエリを実行してください:
EXEC sp_configure 'affinity mask', 3;
RECONFIGURE;
最初の3つのCPU(CPU 1、2、3)のみを使用したい場合は、以下のクエリを実行してください:
EXEC sp_configure 'affinity mask', 7;
RECONFIGURE;
これを0にリセットするには(これにより利用可能なリソースをすべて使用します)、以下のクエリを実行してください:
EXEC sp_configure 'affinity mask', 0;
RECONFIGURE;
概要 #
SQLサービスを再起動する必要はありません。RECONFIGUREが変更を自動的に適用します。
これにより、データ量に応じてETLの実行時間が若干長くなります
ETLの実行は依然として主に…に依存している。
- システム仕様(SQLはデフォルトでCPU負荷が高い)
- 機械内のその他のプロセス
- ETLがデータを変換・ロードする効率性

