私はかなり前からSQLServerのシーケンシャルスループットパフォーマンスの重要性について話してきました。シーケンシャルスループットは、次のようなSQLServerの多くの一般的な操作にとって非常に重要です。
- データベースの完全なバックアップと復元
- インデックスの作成と保守作業
- レプリケーションスナップショットとサブスクリプションの初期化
- AlwaysOnAGレプリカの初期化
- データベースミラーの初期化
- ログ配布セカンダリの初期化
- リレーショナルデータウェアハウスのクエリワークロード
- リレーショナルデータウェアハウスのETL操作
SQL Serverのシーケンシャルスループットの重要性にもかかわらず、のみに焦点を当てている人はまだたくさんいます。 シーケンシャルスループットパフォーマンスをほとんど無視しながら、ランダムI/Oパフォーマンスとレイテンシーについて。シーケンシャルスループットのパフォーマンスについて考えるときは、データがストレージメディアに保存されている状態から、プロセッサコアによって消費されるまでの、データの完全なパスを考慮する必要があります。
使用しているストレージテクノロジーの種類に応じて、イーサネットネットワークインターフェイスカード(NIC)またはInfiniBandホストチャネルアダプター(HCA)カードによってホストサーバーに接続される場合があります。このタイプの接続は、iSCSI SANおよびリモートサーバーメッセージブロック(SMB)3.0ファイル共有で最も一般的です。 Microsoft TechNetには、SMBダイレクトを使用したファイルサーバーのパフォーマンスの向上と呼ばれる、このテーマに関する優れたリファレンスがあります。
単一のNIC/HCAデバイスの理論上のシーケンシャルスループット(ポートごと)を図1に示します。
図1:理論上のNIC/HCAスループット
InfiniBand(QDR)またはInfiniband(FDR)が何を指しているのか疑問に思われる場合に備えて、InfiniBand Trade Associationは、今後数年間のInfiniBand帯域幅の履歴と計画された進歩を示すInfiniBandロードマップを維持しています。 Infinibandには、以下に示すように、InfiniBandリンクの相対的なパフォーマンスを表す頭字語のリストがあります。
- SDR –単一データレート
- DDR –ダブルデータレート
- QDR –クアッドデータレート
- FDR –14データレート
- EDR –拡張データレート
- HDR –高いデータレート
- NDR –次のデータレート
従来のファイバーチャネル(FC)SANは通常、FCスイッチまたはFCSAN自体に直接接続する光ケーブル用の1つ以上のポートを持つ1つ以上のホストバスアダプター(HBA)を使用します。 16Gb FC HBAが広く使用されていることはまだ比較的まれであるため、ほとんどのホストサーバーには4Gbまたは8GbFCHBAがまだあります。
単一のHBAデバイスの理論上のシーケンシャルスループット(ポートごと)を図2に示します。
図2:理論上のHBAスループット
使用しているインターフェイスデバイスやテクノロジーの種類に関係なく、ホストサーバーに接続されている拡張バススロットの種類を考慮する必要があります。サーバーの使用年数と使用しているプロセッサの種類によっては、これはバススロットがサポートできる合計帯域幅に大きな影響を与える可能性があります。 Peripheral Component Interconnect Express(PCIe)Gen 3スロットには、古いPCIeGen2スロットの2倍のレーンあたりの帯域幅があります。サーバーのブランドとモデルの仕様とドキュメントを確認することで、ホストサーバーにある拡張スロットの数と種類を判断できます。これまでのところ、PCIeGen3スロットをサポートしているのはIntelXeonE3 v2、Xeon E3 v3、Xeon E5、Xeon E5 v2、Xeon E5 v3、およびXeonE7v2ファミリプロセッサのみです。これより古いものにはPCIeGen2スロットがあり、非常に古い場合はPCIe Gen 1スロットもあります(コンピューターの観点から)。
単一のPCIeスロットの理論上のシーケンシャルスループットを図3に示します。
図3:理論上の拡張スロットスループット
2008年にIntelNehalemマイクロアーキテクチャが導入されて以来、すべての2P以上のIntelサーバープロセッサは、プロセッサとサーバー内のメモリ間の接続にIntel QuickPath Interconnect(QPI)をサポートし、これらの新しいプロセッサにNon-UniformMemoryAccessのサポートを提供しています。 (NUMA)、古いフロントサイドバス(FSB)に取って代わりました。 NUMAは、システム内の物理プロセッサの数が増えると、特にホストシステムに4つ以上の物理プロセッサがある場合に、スケーラビリティを大幅に向上させます。
最新のIntelプロセッサには、IntelQPIをサポートするメモリコントローラが統合されています。オンラインARKデータベースで特定のIntelプロセッサの仕様を確認すると、GigaTransfers /秒(GT /秒)での定格QPIパフォーマンスを確認できます。 1秒あたりのGigaTransferは、1秒あたりのデータを転送する10億回の操作です。
たとえば、最新のハイエンドIntel Xeon E5-2667 v3プロセッサ(Haswell-EP)のIntelQPI速度は9.6GT /秒ですが、古いローエンドのIntel Xeon E5503プロセッサ(Nehalem-EP)のIntelQPI速度は9.6GT/秒です。 IntelQPI速度はわずか4.8GT/秒です。同世代のマイクロアーキテクチャのプロセッサ間でも、定格インテルQPI速度にばらつきが見られます。たとえば、22nm Haswell-EPファミリでは、ローエンドのIntel XeonE5-2603v3プロセッサの定格は6.4GT/秒ですが、ハイエンドのIntel XeonE5-2660v3プロセッサの定格は9.6GT/秒です。 Intel Xeon E5、E5 v2、およびE5 v3プロセッサにはプロセッサごとに2つのQPIリンクがあり、IntelE7およびE7v2ファミリプロセッサにはプロセッサごとに3つのQPIリンクがあります。
単一のIntelQPIリンクの理論上のシーケンシャルスループットを図4に示します。
図4:理論上のインテルQPIスループット
ホストサーバーの使用年数、使用している正確なプロセッサ、およびインストールされているメモリの種類、速度、量に応じて、各メモリモジュールから利用できる理論上のシーケンシャルスループットの量は異なります。最新のすべてのIntelプロセッサには、プロセッサがサポートするメモリの量と周波数を制御するメモリコントローラが統合されています。最新のビンテージホストサーバーはDDR3メモリを使用しますが、最新世代のHaswell-EP(Intel Xeon E5 v3ファミリ)プロセッサはDDR4メモリをサポートします。 DDR4メモリは、DDR3メモリと比較して、より高速、より高いスループット、より高いメモリ密度、より低い消費電力、および改善された信頼性をサポートします。
単一のメモリモジュールの理論上のシーケンシャルスループットを図5に示します。
図5:理論上のメモリモジュールスループット
既存または計画中の新しいシステムの個々のコンポーネントを見るときは、システムに人為的なシーケンシャルパフォーマンスのボトルネックをもたらす可能性のある不一致のコンポーネントに注意する必要があります。たとえば、4GbFCHBAを使用してSANにアクセスしているという事実によって機能が低下しているハイエンドプロセッサを搭載した新しいサーバーがあるとします。もう1つの例は、低帯域幅のPCIe 2.0 x4スロットにインストールされた非常に高速なPCIeフラッシュストレージカードまたはRAIDコントローラーであり、デバイスの合計シーケンシャルスループットを人為的に制限していました。
これは、特にハードウェア愛好家ではない人々にとって、消化すべき多くの技術情報であったことを私は知っています。この記事から取り上げるべき主なアイデアは、多くの一般的なSQLServerタスクとワークロードにとってシーケンシャルスループットのパフォーマンスが非常に重要であるということです。プロセッサ、メモリタイプ、拡張スロット、および拡張デバイスに関する低レベルの詳細は、実際には、サーバーとそのストレージサブシステムから得られるシーケンシャルスループットパフォーマンスに大きな違いをもたらします。シーケンシャルスループットが優れていると、データベースプロフェッショナルとしての生活が非常に楽になり、組織をはるかに高いレベルでサポートできるようになります。