SQL Server のエディション別の計算容量制限
適用対象: SQL Server
この記事では、SQL Server の各エディションの計算容量の制限と、同時マルチスレッド (SMT) プロセッサを持つ物理環境と仮想化環境での違いについて説明します。 Intel CPU では、SMT は Hyper-Threading と呼ばれます。
概要
このテーブルでは、前の図の表記について説明します。
値 | 説明 |
---|---|
0..1 | 0 個または 1 個 |
1 | 1 個 |
1..* | 1 個以上 |
0..* | 0 個以上 |
1..2 | 1 つまたは 2 つ |
さらに詳しく説明します。
- 仮想マシン (VM) には、1 個以上の仮想プロセッサが含まれます。
- 1 個の仮想マシンには、1 個以上の仮想プロセッサが割り当てられます。
- 0 個または 1 個の仮想プロセッサは、0 個以上の論理プロセッサにマップされます。 次に、仮想プロセッサの論理プロセッサに対するマッピングを示します。
- 1 対 0 の場合: ゲスト オペレーティング システムで使用されないアンバウンド論理プロセッサを表します。
- 1 対多の場合: オーバーコミットを表します。
- 0 対多の場合: ホスト システム上に仮想マシンがないことを表します。 そのため、VM は論理プロセッサを使用しません。
- ソケットは、0 個以上のコアにマップされます。 次に、ソケットとコアのマッピングを示します。
- 1 対 0 の場合: 空のソケットを表します。 チップはインストールされていません。
- 1 対 1 の場合: ソケットに取り付けられているシングルコア チップを表します。 このマッピングは最近ではまれです。
- 1 対多の場合: ソケットに取り付けられているマルチコア チップを表します。 通常、この値は 2、4、8 です。
- コアは、1 個または 2 個の論理プロセッサにマップされます。 次に、コアの論理プロセッサに対するマッピングを示します。
- 1 対 1: SMT がオフ。
- 1 から 2: SMT がオン。
次の定義は、このトピック全体で使用される用語に適用されます。
スレッドまたは論理プロセッサは、 SQL Server、オペレーティング システム、アプリケーション、ドライバーでは 1 個の論理コンピューティング エンジンとして見なされます。
コアは、プロセッサ単位です。 1 個以上の論理プロセッサで構成されます。
物理プロセッサは、1 個以上のコアで構成されます。 物理プロセッサは、プロセッサ パッケージまたはソケットと同じです。
NUMA ノード当たりの論理コア数を 64 に制限する
NUMA ノード当たり 64 を超える論理プロセッサを持つサーバーでスタック ダンプなどの問題が発生する可能性があります。 BIOS またはファームウェアの構成により、オペレーティング システムに提示される論理コア数を、NUMA ノードあたり最大 64 個の論理プロセッサに減らすことができます。
注意事項
SQL Server 2022 (16.x) 累積的な更新プログラム 11 では破壊的変更が導入されました。NUMA ノード当たり 64 個を超える論理コアが検出された場合、データベース エンジンは開始されません。
SQL Server 2022 (16.x) 累積更新プログラム 15 以降、セットアップでは、この構成はサポートされておらず、データベース エンジン サービスが停止され、無効になるという警告が生成されます。 この警告は、セットアップ ログにも含まれます。
SMT を無効にすると、Azure Virtual Machine 内の NUMA ノード当たりの論理コア数を減らすことができます。 ベアメタル SQL Server インスタンスの場合は、サブ NUMA クラスタリング (SNC) またはソケット当たりのノード (NPS) オプションを使用して論理コア数を減らすことができます。
Azure Virtual Machine で SMT を無効にする
SQL Server では、NUMA ノード当たりサポートされる制限である 64 個の論理コアがあります。 場合によっては、Azure Mv3 シリーズの VM がこの制限を超える可能性があるため、SQL Server の起動を妨げるか、パフォーマンスが低下した状態で実行できます。 SMT を無効にするには、PowerShell とレジストリ エディター (reg.exe
) を使用して次の変更を行います。 レジストリを編集する前に、必ずバックアップしてください。
論理コアの数を確認します。 比率が 2:1 (論理コア数がコア数の 2 倍) の場合、SMT が有効になります。
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
次の 2 つのレジストリ変更で SMT を無効にしてから、VM を再起動します。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
論理コアの数をもう一度確認します。 論理コアの数は、コアの数と一致する必要があります。
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
ベア メタル インスタンスの論理コア数を減らす
次の表では、SQL Server のベア メタル インスタンスの論理コア数を減らす方法について説明します。
Intel CPU では、以前は Cluster-on-Die (CoD) と呼ばれるサブ NUMA クラスタリング (SNC) を有効にして、1 つの物理ソケット内に 2 つの NUMA ドメインを作成できます。
構成設定 | 説明 |
---|---|
SNC 無効 (既定) | サブ NUMA クラスタリングを無効にします。 |
SNC 有効 | サブ NUMA クラスタリングを有効にします。 |
AMD CPUでは、ソケットごとのさまざまなノード (NPS) オプションを有効にすることができます。
構成設定 | 説明 |
---|---|
NPS0 |
デュアル ソケット システムでは、NUMA は単一のノードとして表示され、すべてのメモリ チャンネルがノード間でインタリーブされます。 |
NPS1 (既定) |
この構成では、ソケットごとに 1 つの NUMA ノードが表示されます。 |
NPS2 |
この構成では、SNC と同様に、ソケットごとに 2 つの NUMA ノードが表示されます。 |
NPS4 |
この構成では、ソケットごとに 4 つの NUMA ノードが表示されます。 |
解説
1 個以上の物理プロセッサを搭載したシステムや、複数のコアまたは SMT を持つ物理プロセッサを搭載したシステムでは、オペレーティング システムで複数のタスクを同時に実行できます。 各実行スレッドは論理プロセッサとして表示されます。 たとえば、SMT が有効になっているクアッド コア プロセッサがお使いのコンピューターに 2 個搭載されていて、それぞれのコアにスレッドが 2 個ある場合、論理プロセッサの数は次のように 16 個になります: プロセッサ数が 2、プロセッサごとのコア数が 4、コアごとのスレッド数が 2 (2 x 4 x 2 = 16) 次の点に注意してください。
SMT コアの単一スレッドの論理プロセッサの計算容量は、SMT が無効になっている同じコアの論理プロセッサの計算容量よりも小さくなります。
SMT コアの 2 個の論理プロセッサの計算容量は、SMT が無効になっている同じコアの計算容量よりも大きくなります。
SQL Server の各エディションには、次の 2 つの計算容量制限があります。
ソケット (物理プロセッサまたはプロセッサ パッケージ) の最大数
オペレーティング システムによって報告されたコアの最大数
これらの制限は、 SQL Serverの 1 つのインスタンスに適用され、 1 つのインスタンスが使用する最大計算容量を表します。 インスタンスが配置される可能性があるサーバーは制限を受けません。 実際、SQL Server の複数のインスタンスを同じ物理サーバーに配置することは、以下に示す容量制限よりも多くのソケットまたはコアを搭載した物理サーバーの計算容量を使用するための効果的な方法です。
次の表に、 SQL Serverの各エディションの 1 つのインスタンスに適用される計算容量制限を示します。
SQL Server エディション | 1 つのインスタンスの最大計算容量 (SQL Server データベース エンジン) | 1 つのインスタンスの最大計算容量 (AS、RS) |
---|---|---|
Enterprise Edition: コアベース ライセンス 1 | オペレーティング システムの最大容量 | オペレーティング システムの最大容量 |
Developer | オペレーティング システムの最大容量 | オペレーティング システムの最大容量 |
Standard | 4 ソケットまたは 24 コアのいずれか小さいほうに制限 | 4 ソケットまたは 24 コアのいずれか小さいほうに制限 |
Express | 1 ソケットまたは 4 コアのいずれか小さいほうに制限 | 1 ソケットまたは 4 コアのいずれか小さいほうに制限 |
1 Enterprise Edition (サーバーおよびクライアント アクセス ライセンス (CAL)付き) のライセンスは、SQL Server インスタンス当たり 20 コアに制限されています。 (このライセンスは新しい使用許諾契約では使用できません。)コアベースのサーバー ライセンス モデルでは、制限はありません。
仮想環境では、計算容量制限はコアではなく論理プロセッサの数に基づいています。 プロセッサのアーキテクチャが、ゲスト アプリケーションに表示されないためです。
たとえば、クアッド コア プロセッサが搭載された 4 個のソケットと、コアごとに 2 個の SMT スレッドを有効にする機能を備えたプロセッサには、SMT が有効になっている論理プロセッサが 32 個あります。 しかし、SMT が無効になっている論理プロセッサは 16 個しかありません。 これらの論理プロセッサは、サーバー上の仮想マシンにマップすることができます。 マップした論理プロセッサに対する仮想マシンの計算負荷がホスト サーバーの物理プロセッサの実行スレッドにマップされます。
仮想プロセッサ当たりのパフォーマンスが重要な場合は、SMT を無効にすることができます。 SMT の構成は、BIOS のセットアップ中にプロセッサの BIOS 設定で行うことができます。ただし、これは通常、サーバーを対象とした操作であり、サーバー上で実行されているすべてのワークロードに影響します。 したがって、仮想化された環境で実行されるワークロードを、物理オペレーティング システム環境で SMT によるパフォーマンス向上の恩恵を受けるワークロードから切り離すと良い結果が得られる場合があります。
関連するコンテンツ
ヘルプの参照
- SQL に対するご意見:SQL Serverの改善に関するご提案がある場合
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server):SQL Server に関する質問
- スタック オーバーフロー (tag sql-server):SQL 開発に関する質問とその回答
- Reddit:SQL Server に関する一般的なディスカッション
- MicrosoftSQL Serverライセンス条項および情報
- 法人のお客様向けサポート オプション
- その他の SQL Serverのヘルプとフィードバック
SQL ドキュメントへの投稿
SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。
詳細については、「SQL Server のドキュメントに投稿する方法」を参照してください。